html - 关于CSS实现border的0.5px设置?
问题描述
网上看到的代码,有些不理解的地方:
.custom-border{ width:200px; margin:10px auto; height:100px; border:1px solid #333; background-color:#eee; padding:10px;}.scale-border{ margin:10px auto; height:100px; position:relative; padding:10px; width: 200px;}.border{ -webkit-transform:scale(0.5); transform:scale(0.5); position:absolute; border:1px solid #333; top:-50%; right:-50%; bottom:-50%; left:-50%; border-radius: 10px; background-color:#eee;}.content{ position:relative; z-index:2;}<p class='custom-border border-color'>边框宽度1px</p><p class='scale-border'> <p class='content'>边框宽度0.5px</p> <p class='border border-color'></p></p>
请问在这里CSS代码中的
top:-50%;right:-50%;bottom:-50%;left:-50%;
是什么意思?实现这个0.5px的边框的原理是什么?btw,transform:scale是不是在项目中挺少用到的?百度了好久关于scale 的详细用法甚少。。
问题解答
回答1:其实主要是scale(0.5)把它缩小到0.5px;然后利用
top:-50%;right:-50%;bottom:-50%;left:-50%;
去把它变大到原来的大小。但是这个变大并不影响边框的大小;
回答2:首先 transform:scale(0.5); 表示缩放1/2的意思,就会变成这样(黑色外边框是特意加上去对比的):

因为对于缩放而言是整体缩小。所以呢,缩小以后,又需要把她拉回原来的大小,这样看起来才像0.5px的边框,即:
top:-50%;right:-50%;bottom:-50%;left:-50%;
感觉多加一个 <p> 来表示0.5px的大小,并不优雅,于是改写这样:
.custom-border{ width:200px; margin:10px auto; height:100px; border:1px solid #333; background-color:#eee; padding:10px;}.scale-border{ margin:10px auto; height:100px; position:relative; padding:10px; width: 200px;}.scale-border::after{ content: ’ ’; -webkit-transform:scale(0.5); transform:scale(0.5); position:absolute; border:1px solid #333; top:-50%; right:-50%; bottom:-50%; left:-50%; border-radius: 10px; background-color:#eee;}.content{ position:relative; z-index:2;}
<p class='custom-border border-color'>边框宽度1px</p><p class='scale-border'> <p class='content'>边框宽度0.5px</p></p>回答3:
是为了放大到原始.scale-border的两倍大小。因为.border是绝对定位(position:absolute;),所以其定位是根据其最近的非position:static来定的,而.scale-border是相对定位的(position:relative;),所以
top:-50%;right:-50%;bottom:-50%;left:-50%;
就是.border以.scale-border的中心为中心,放大到两倍,然后再ransform:scale(0.5);缩小到1/2,那就和.scale-border一样大小了。此时的 1px border,就变为 0.5px。
transform应该可以放心使用。
回答4:兄弟,看这个你就明白了。https://developer.mozilla.org...
相关文章:
1. docker api 开发的端口怎么获取?2. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~3. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题4. docker容器呢SSH为什么连不通呢?5. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?6. docker网络端口映射,没有方便点的操作方法么?7. Hbuilder中的phpMyAdmin访问题8. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?9. 请问“由于 Cookie “PHPSESSID”的“SameSite”属性设置为“None”,但缺少“Secure”属性,此 Cookie 未来将被拒绝。”请问出现这个问题怎么办?10. docker start -a dockername 老是卡住,什么情况?

网公网安备