摘要:在移动端有时的边框会显得很粗不美观,淘宝京东的触屏均是采用浅细的线条来显示在移动设备上。
在移动端有时1px的边框会显得很粗不美观,淘宝、京东的触屏均是采用浅细的线条来显示在移动设备上。具体实现方法如下:
普通的1px黑色实线边框:
border: 1px solid #000;
半像素边框当然不是简单地把1px改为0.5px(会被解析成1px),border-width的值只能是自然数
类似的,outline, box-shadow等等也没有办法画出0.5px的细线
常规思路是不可行的,我们可以用伪元素 + 缩放巧妙地实现,具体步骤如下:
设置目标元素作为定位参照
.thinner-border { position: relative; /* 只要不是默认值static即可 */ }
给目标元素添加一个伪元素before或者after,并设置绝对定位
.thinner-border:before { content: ""; position: absolute; }
给伪元素添上1px的边框
border: 1px solid red;
设置伪元素的宽高为目标元素的2倍
width: 200%; height: 200%;
缩小0.5倍(变回目标元素的大小)
transform-origin: 0 0; transform: scale(0.5, 0.5);
把border包进来
box-sizing: border-box;
简言之就是先放大再缩回来,border-box是关键,否则边框不会一起缩放
二.具体实现
上面已经分步骤写得很清楚了,拼在一起就是完整实现:
.thinner-border { position: relative; } .thinner-border:before { content: ""; position: absolute; width: 200%; height: 200%; border: 1px solid #000; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; -o-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scale(0.5, 0.5); -ms-transform: scale(0.5, 0.5); -o-transform: scale(0.5, 0.5); transform: scale(0.5, 0.5); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
功能是给class值指定了thinner-border的block和inline-block元素添上半像素的边框,因为inline元素的width和height有一些限制,伪元素获取到的200%要比实际值小,边框的宽高也会比期望的小。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/112089.html
摘要:在移动端有时的边框会显得很粗不美观,淘宝京东的触屏均是采用浅细的线条来显示在移动设备上。 在移动端有时1px的边框会显得很粗不美观,淘宝、京东的触屏均是采用浅细的线条来显示在移动设备上。具体实现方法如下: 普通的1px黑色实线边框: border: 1px solid #000; 半像素边框当然不是简单地把1px改为0.5px(会被解析成1px),border-width的值只能是自...
摘要:基本上就是将单侧投影中的技巧运用两次,以如下所示在浏览器中的效果如下模拟边框使用属性可以模拟的效果,以如下所示在浏览器中的效果如下我们可以看到利用属性模拟了的效果,但是与不同的是,使用创建的边框效果并不会影响元素的尺寸。 1.写在前面 在CSS3中,可以使用box-shadow属性来创建阴影效果来给二维平面增加深度效果,这个属性在前端开发中使用的非常多,例如segmentfault的首...
阅读 1666·2021-11-17 09:33
阅读 3528·2021-11-16 11:40
阅读 3053·2019-08-30 11:23
阅读 1046·2019-08-29 16:36
阅读 2462·2019-08-29 13:23
阅读 1737·2019-08-29 12:59
阅读 1540·2019-08-29 12:42
阅读 1976·2019-08-28 18:22