WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Smart lösning på rundade hörn... (https://www.wn.se/forum/showthread.php?t=32589)

grinditwp 2008-10-15 15:50

Kollade på Bredbandsbolagets hemsida och lade märke till hur de har löst rundade hörn på boxar.
http://www.bredbandsbolaget.se/wps/portal/

Traditionellt sett brukar jag, och många lösa detta genom, 4-8 st bilder, ett för varje hörn och kant.
Bredbandsbolaget har löst detta med en stor bild;
http://www.bredbandsbolaget.se/wps/themes/.../remote_box.gif

Css till det hela finner man här:
http://www.bredbandsbolaget.se/wps/themes/...v3/B2_boxes.css

Någon som är duktig på css som kan förklara hur det fungerar?

thorsell 2008-10-15 15:52

Här är lite mer om rundade hörn med enbart CSS/Javascript (JQuery):

http://www.methvin.com/jquery/jq-corner-demo.html

crazzy 2008-10-15 16:02

http://curvycorners.net brukar jag använda.

grinditwp 2008-10-15 17:17

Jo, men om ni förstod min post så handlade det inte om hur man gör rundade hörn generellt. Och framför allt inte med JS. :P

Kolla på BBB's lösning, den är smart. En bild och lite css. Inget mer.

Lindahl 2008-10-15 17:34

Bredbandsbolagets lösning har jag kört tidigare, men i en simplare variant. Det är väl egentligen inte så revolutionerande, men jag har inte sett den användas i två dimensioner tidigare.

Förenklat kan man göra såhär:
Antag att du alltid har fast bredd på din box.
Kod:

<div>
  <div class='box_top'>Content</div>
  <div class='box_bottom'></div>
</div>

Sätt bakgrundsbilden på box_top.
Sätt höjden på box_bottom till något litet (10 pixlar eller så), och lägg in samma bild här, men denna gång med position (0,100%), alltså med utgångspunkt nere till vänster.

Eftersom den nedre div:en bara är 10 px hög kommer endast de 10 nedersta pixlarna av bilden att visas, och i den övre div:en visas det av bilden som får plats (detta förutsätter alltså en större bild än själva boxen).

Vad bredbandsbolaget har gjort är att de utökat lösningen till ytterigare en dimension, men principen är densamma, det kräver bara två till div:ar.

Lätt som en plätt.

Hjalmarsson 2008-10-15 21:33

1 bild, sunkig markup och en seg jävla sida.. inget att rekommendera.

Att spamma ut massa extra divs för att "underlätta" (är ju egentligen helt fel ord här^^) är ju bara idiotiskt, då kan vi lika gärna gå tillbaka till tabeller a la rutnäts tänket.

grinditwp 2008-10-15 22:16

Citat:

Ursprungligen postat av Lindahl
Bredbandsbolagets lösning har jag kört tidigare, men i en simplare variant. Det är väl egentligen inte så revolutionerande, men jag har inte sett den användas i två dimensioner tidigare.

Förenklat kan man göra såhär:
Antag att du alltid har fast bredd på din box.
Kod:

<div>
 * *<div class='box_top'>Content</div>
 * *<div class='box_bottom'></div>
</div>

Sätt bakgrundsbilden på box_top.
Sätt höjden på box_bottom till något litet (10 pixlar eller så), och lägg in samma bild här, men denna gång med position (0,100%), alltså med utgångspunkt nere till vänster.

Eftersom den nedre div:en bara är 10 px hög kommer endast de 10 nedersta pixlarna av bilden att visas, och i den övre div:en visas det av bilden som får plats (detta förutsätter alltså en större bild än själva boxen).

Vad bredbandsbolaget har gjort är att de utökat lösningen till ytterigare en dimension, men principen är densamma, det kräver bara två till div:ar.

Lätt som en plätt.

Tack för ditt svar. Det förklarade en del. Inte vidare svårt alltså.

Citat:

Ursprungligen postat av Hjalmarsson
1 bild, sunkig markup och en seg jävla sida.. inget att rekommendera.
Att spamma ut massa extra divs för att underlätta (är ju egentligen helt fel ord här^^) är ju bara idiotiskt, då kan vi lika gärna gå tillbaka till tabeller a la rutnäts tänket.

Hur tycker du att man ska lösa det då?
Varför skulle det vara segt? man laddar bara in en bild istället för flera. En laddning istället för 8-9?

Syke 2008-10-15 23:01

De använder väl något som är väldigt nära "css sprites". Bra på det sättet att det är bara en bild att ladda ner och cacha.

grinditwp 2008-10-16 08:45

Citat:

Originally posted by Syke@Oct 15 2008, 23:01
De använder väl något som är väldigt nära "css sprites". Bra på det sättet att det är bara en bild att ladda ner och cacha.
Ja verkar så, bra artikel jag hittade på ämnet, http://www.alistapart.com/articles/sprites

Med den informationen verkar det som det hela går att lösa.

Jag återkommer om jag löst det hela :P

grinditwp 2008-10-16 09:24

Såhär ser lösningen ut i alla fall, det var lite krångligare än jag förväntat.

Kod:

<style type="text/css">
<!--
div.remoteBox {
        background: url(http://www.bredbandsbolaget.se/wps/themes/html/B2_Black_v3/images/boxes/remote_box.gif) 0 0 repeat-x #efefef;
        font-size: 10px;
        position: relative;
        margin: -9px 0px 9px 0;
        right: -9px;
        line-height: normal;
}

div.remoteBox div.wrap {
        padding: 0 24px 0 0;
        background: url(http://www.bredbandsbolaget.se/wps/themes/html/B2_Black_v3/images/boxes/remote_box.gif) 100% 0 repeat-y;
}

div.remoteBox div.bi {
        padding: 0 0 0 24px;
        background: url(http://www.bredbandsbolaget.se/wps/themes/html/B2_Black_v3/images/boxes/remote_box.gif) 0 0 repeat-y;
}

div.remoteBox div.bt {
        height: 24px;
        margin: 0 -24px;
        padding-right: 26px;
        background: none;
}

div.remoteBox div.bt div {
        height: 24px;
        background: url(http://www.bredbandsbolaget.se/wps/themes/html/B2_Black_v3/images/boxes/remote_box.gif) 0 0 no-repeat;
}

div.remoteBox div.bb {
        height: 24px;
        margin: 0 -24px;
        background: url(http://www.bredbandsbolaget.se/wps/themes/html/B2_Black_v3/images/boxes/remote_box.gif) 100% 100% no-repeat;
}

div.remoteBox div.bb div {
        width: 24px;
        height: 24px;
        background: url(http://www.bredbandsbolaget.se/wps/themes/html/B2_Black_v3/images/boxes/remote_box.gif) 0 100% no-repeat;
}
div.remoteBox div.tableContainer {
        width: auto;
}

-->
</style>
<br>
<br>

<!--BOX 1-->
<div class="remoteBox" style="width:400px;">
        <div class="wrap">
 *<div class="bi">
 *        <div class="bt"><div></div></div><!-- bt -->
 * *<div class="tableContainer">
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * *</div>
 * * * * * * <div class="bb"><div></div></div><!-- bb -->
 *</div><!-- bi -->
        </div><!-- wrap -->
</div><!-- remoteBox --><br>


<!--BOX 2-->
<div class="remoteBox" style="width:300px;">
        <div class="wrap">
 *<div class="bi">
 *        <div class="bt"><div></div></div><!-- bt -->
 * *<div class="tableContainer">
 * * * * * * * * * *EN HELT ANNAN BOX!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * *TEST!<br />
 * * * * * * * * * <img src="image/portfolio/tff.jpg"><br>
JAHA<br />
 * * * * * * * *</div>
 * * * * * * <div class="bb"><div></div></div><!-- bb -->
 *</div><!-- bi -->
        </div><!-- wrap -->
</div><!-- remoteBox -->

Verkar dock krävas någon fix i IE 6. Ush!
Kanske är enklare att beskära bilden själv trotts allt? :P


Alla tider är GMT +2. Klockan är nu 18:22.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson