仅使用CSS创建漂亮的水平线

Mic*_*ick 21 css css3

有一个教程在这里就如何做到这一点在Photoshop:

在此输入图像描述

我只想用CSS做这件事.我能越接近就是这个小提琴.

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);
}
Run Code Online (Sandbox Code Playgroud)
<hr class="fancy-line"></hr>
Run Code Online (Sandbox Code Playgroud)

在阴影上做渐变似乎很难.有什么想法我可以改进吗?

thg*_*ell 52

我会使用一个radial-gradient伪元素而不是一个伪元素,box-shadow因为它向边缘逐渐变细.

radial-gradient上方定位<hr>,使其切成两半.然后在另一个psuedo元素下面放置一个<hr>与背景颜色相同的颜色,高度足以覆盖渐变的其余部分.

更新了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;
}
Run Code Online (Sandbox Code Playgroud)

  • Maaaaaaate!你是一个活生生的传奇.这是我生命中见过的最好的路线.在具有ca $ h的等价类中,从数学/项目管理角度来讲.我不小心关闭了这个窗口,然后意识到我忘了发表评论和upvote.它甚至会彻底失败到IE.用于CHRISTS的IEEEEE !!!! (2认同)