2013-03-05 8 views
20

Jest poradnik here, w jaki sposób to zrobić w photoshopie:stworzyć piękną linię poziomą z CSS tylko

enter image description here

Próbuję to zrobić tylko z CSS. Im bliżej mogę się dostać, tym jest fiddle.

hr.fancy-line { 
    border: 0; 
    height: 1px; 
    background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(215,215,215,0.75), rgba(0,0,0,0)); 
    background-image: -moz-linear-gradient(left, rgba(0,0,0,0), rgba(215,215,215,0.75), rgba(0,0,0,0)); 
    background-image: -ms-linear-gradient(left, rgba(0,0,0,0), rgba(215,215,215,0.75), rgba(0,0,0,0)); 
    background-image: -o-linear-gradient(left, rgba(0,0,0,0), rgba(215,215,215,0.75), rgba(0,0,0,0)); 
    box-shadow: 0px -2px 4px rgba(136,136,136,0.75); 
} 
<hr class="fancy-line"></hr> 

Doing gradient w cieniu wydaje się dość trudne. Jakieś pomysły, jak mogę to poprawić?

+0

Najbliżej mogę dostać: http://jsfiddle.net/yLbtC/6/ – Passerby

+0

To niesamowite @Passerby. Wygląda niesamowicie. Nie ma problemu, jeśli div jest pusty. – Mick

+2

http://jsfiddle.net/joshnh/HdwKA/ i http://jsfiddle.net/4yZNN/ powiązane wyniki –

Odpowiedz

50

Chciałbym użyć radial-gradient do pseudoelementu zamiast box-shadow, ponieważ zwęża się ku brzegom ładniej.

Ustaw pozycję radial-gradient powyżej <hr>, tak aby była przecięta na pół. Następnie umieść kolejny element psuedo tuż poniżej <hr> o tym samym kolorze co tło i wysokość wystarczająco duże, aby pokryć pozostałą część gradientu.

Updated JSFiddle


CSS

hr.fancy-line { 
    border: 0; 
    height: 1px; 

} 
hr.fancy-line:before { 
    top: -0.5em; 
    height: 1em; 
} 
hr.fancy-line:after { 
    content:''; 
    height: 0.5em; 
    top: 1px; 
} 

hr.fancy-line:before, hr.fancy-line:after { 
    content: ''; 
    position: absolute; 
    width: 100%; 
} 

hr.fancy-line, hr.fancy-line:before { 
    background: radial-gradient(ellipse at center, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 75%); 
} 

body, hr.fancy-line:after { 
    background: #f4f4f4; 
} 
+0

To wygląda świetnie! – Mick

+0

Po prostu z ciekawości, czy istnieje szczególny powód, dla którego używasz 'em' zamiast' px'? Czy to jest lepsza praktyka? – Mick

+1

@Patt Próbuję użyć 'em' więcej, ponieważ skaluje się lepiej, jeśli zmieni się" wielkość czcionki ". ogólnie "


" ma wysokość 1em, która jest równa bieżącemu "rozmiarowi czcionki". Mogę sobie wyobrazić, że '
' zająć ilość przestrzeni 1 linii brzmi sprawiedliwie. – thgaskell

3

Proszę spojrzeć na https://codepen.io/ibrahimjabbari/pen/ozinB. Ta strona internetowa zawiera 18 stylów linii poziomych. Niektóre wydają się niesamowite.

Poniżej znajduje się przykład.

hr.style17 { 
    border-top: 1px solid #8c8b8b; 
    text-align: center; 
} 
hr.style17:after { 
    content: '§'; 
    display: inline-block; 
    position: relative; 
    top: -14px; 
    padding: 0 10px; 
    background: #f0f0f0; 
    color: #8c8b8b; 
    font-size: 18px; 
    -webkit-transform: rotate(60deg); 
    -moz-transform: rotate(60deg); 
    transform: rotate(60deg); 
} 

enter image description here

1

Oto najprostsza forma do osiągnięcia tego celu:

hr{ 
    border: 0; 
    height: 1px; 
    background-image: -webkit-linear-gradient(left, #f0f0f0, #8c8b8b, #f0f0f0); 
    background-image: -moz-linear-gradient(left, #f0f0f0, #8c8b8b, #f0f0f0); 
    background-image: -ms-linear-gradient(left, #f0f0f0, #8c8b8b, #f0f0f0); 
    background-image: -o-linear-gradient(left, #f0f0f0, #8c8b8b, #f0f0f0); 
} 
Powiązane problemy