专栏名称: 京东成都研究院
京东商城成都研究院信息平台
目录
相关文章推荐
51好读  ›  专栏  ›  京东成都研究院

CSS小技巧

京东成都研究院  · 公众号  · 成都  · 2018-01-29 18:06

正文

本文转载自微信 公众号 「火头军人」(ID:JD-Developer)

在页面构建中,能明显提升页面显示质量的一些 CSS 小技巧。很多简洁美观的页面表现,可以使用 CSS3 代码即可实现, 减少图片的使用

一、边框内圆角

我们在设计例如按钮等控件的时候,会遇到这样的设计:只有内侧有圆角,而边框或者描边的四个角还是保持直角的形状,用以下代码可以轻松的实现。

#wrapper {
    width: 200px;
    height: 80px;
    padding: 10px;
    background: rgb(255, 187, 51);

    #content {
        display: flex;
        justify-content: center;
        align-items: center;
        height: 100%;
        background: rgb(85, 136, 187);
        color: #fff;
        font-size: 14px;
        border-radius: 20px;
    }
}

这种解决方案需要使用到两个 dom 元素,那么如果只使用一个 dom 元素,应该怎么实现?

这里需要用到 CSS 的两个属性: box-shadow outline 属性,具体属性参见MDN。

box-shadow 属性有以下5个特性

这里我们将使用第四个属性 spread-radius 来填充效果当中的空白。同时利用 outline 的特性:描边不跟随边框绘制的特点来实现(因为不清楚这是不是一个bug,所以在将来的版本中可能会改变),具体代码如下。

box-shadow: 0 0 0 10px rgb(255, 187, 51);
outline: 10px solid rgb(255, 187, 51);

这种实现方式,对于边框的宽度和圆角的大小有一定的限制效果。仅当边框宽度 w 与圆角半径 r 存在 w ≥ ( 2-1)r 关系时才可实现.

二、条纹背景

如何使用CSS来实现条纹?

使用 linear-gradient 属性实现

#stripe {
  width: 400px;
  height: 200px;
  background: linear-gradient(rgb(255, 187, 51), rgb(85, 136, 187));
}

尝试修改 linear-gradient 属性,当 linear-gradient 属性

background: linear-gradient(rgb(255, 187, 51) 50%, rgb(85, 136, 187) 50%);

因为条纹是由 background-image 属性生成的,因此当然也可以使用 background-size 属性来改变它的大小

background-size: 100% 40px;

如果某个色标的位置值比整个列表中在它之前的色标的位置值都要小,则该色标的位置值会被设置为它前面所有色标位置值的最大值。

background: linear-gradient(rgb(255, 187, 51) 60%, rgb(85, 136, 187) 0);

然后我们尝试创建一个三色条纹以及垂直条纹:

1.三色条纹

background: linear-gradient(
    rgb(255, 187, 51) 33.3%, 
    rgb(85, 136, 187) 0, 
    rgb(85, 136, 187) 66.6%, 
    rgb(170, 255, 0) 0
);

2.垂直条纹

background: linear-gradient(to right, rgb(255, 187, 51) 60%, rgb(85, 136, 187) 0);

默认值为 to bottom ,可以设置 to right; to left

3.斜条纹

background: linear-gradient(45deg, 
    rgb(255, 187, 51) 25%, 
    rgb(85, 136, 187) 0, 
    rgb(85, 136, 187) 50%, 
    rgb(255, 187, 51) 0%, 
    rgb(255, 187, 51) 75%, 
    rgb(85, 136, 187) 0
);
background-size: 30px 30px;

为了达到斜条纹等宽的视觉效果,需要运用到勾股定理来计算宽度。

background-size: 42px 42px;

介绍 linear-gradient 的升级版 : repeating-linear-gradient







请到「今天看啥」查看全文