css - 仅用 CSS 创建一条漂亮的水平线

标签 css

有教程here关于如何在 photoshop 中执行此操作:

enter image description here

我正在尝试仅使用 CSS 来执行此操作。我能得到的更近的是这个 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>

在阴影上做渐变看起来很困难。 我有什么改进方法吗?

最佳答案

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

定位 radial-gradient<hr> 之上所以它被切成两半。然后将另一个伪元素放在 <hr> 的正下方与背景颜色相同,高度刚好足以覆盖渐变的其余部分。

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;
}

关于css - 仅用 CSS 创建一条漂亮的水平线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15215556/

相关文章:

css - 上传到服务器时不显示div

css - 同一行上元素之间的 Bootstrap 填充或边距

javascript - 坚持将 css 类添加/切换到 jquery 中的 html 元素

javascript - 完全旋转和随机化所有 DOM 元素

html - 没有绝对位置的 Z-Index

html - Adjustable Sticky footer CSS 的小问题

javascript - Gallery Filters,如何在这个例子中使用?

javascript - Material.io 标签 : where to put the tab content?

html - 所有 css 样式规则都从一个 div 元素中剥离,但没有从其他元素中剥离

php - <select> 未填充,按钮与 <select> 内联