[前端CSS高频面试题]如何画0.5px的边框线(详解)

简介: [前端CSS高频面试题]如何画0.5px的边框线(详解)

思路

               首先  直接这样设置


 border: 0.5px solid red;

               0.5px的边框,肯定是不对的,边框大小会向上取整。


           box-shadow阴影实现的思路

                     既然border不能设置小数的边框,那我们能不能找一个属性有相似的效果来替代它呢,当然可以,我们可以用box-shadow属性用阴影达到0.5px的边框效果,box-shadow阴影属性是允许小数值的,我们可以用它达到单条边框和四条边框。


            ::after定位伪类实现的思路

               直接设置伪类元素,设置指定的高度,通过定位来控制位置。


           transform 缩放实现的思路

                       我们可以设置任意大小的边框,改变中心点,通过缩放效果(找好倍率)来达成想要的结果。


           border-image: linear-gradient 边框线性渐变的思路

                        同样设置任意大小的边框,通过渐变属性改变一部分边框的颜色效果,比如将一部分边框融入背景,这样就能得到想要的效果。


答案

             


           box-shadow阴影实现的答案

                 


 </div><div>        div {</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin: 100px auto;</div><div>            /* border: 1px solid red; */</div><div>            box-shadow: 0px 0px 0px 0.5px green;</div><div>        }</div><div>    

 


       

          ::after定位伪类实现的答案

             


</div><div>        div {</div><div>            position: relative;</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin-top: 10px;</div><div>            /* box-shadow: 0px 0px 0px 0.5px green; */</div><div>        }</div><div>        div::after {</div><div>            position: absolute;</div><div>            content: "";</div><div>            background-color: red;</div><div>            width: 100%;</div><div>            height: 0.5px;</div><div>            bottom: 0px;</div><div>        }</div><div>    

 


             


           transform 缩放实现的答案

             


</div><div>        div {</div><div>            position: relative;</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin-top: 10px;</div><div>            /* box-shadow: 0px 0px 0px 0.5px green; */</div><div>        }</div><div>        div::after {</div><div>            position: absolute;</div><div>            content: "";</div><div>            width: 200%;</div><div>            height: 200%;</div><div>            border: 1px solid red;</div><div>            transform-origin: 0 0;</div><div>            transform: scale(0.5);</div><div>        }</div><div>    

 


             


           border-image: linear-gradient 边框线性渐变的答案    

               


 </div><div>        div {</div><div>            position: relative;</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin-top: 10px;</div><div>            /* box-shadow: 0px 0px 0px 0.5px green; */</div><div>        }</div><div>        div::after {</div><div>            display: block;</div><div>            position: absolute;</div><div>            content: "";</div><div>            width: 100%;</div><div>            height: 1px;</div><div>            bottom: 0px;</div><div>            background-color: red;</div><div>            background: linear-gradient(to bottom, transparent 50%, red 50%);</div><div>        }</div><div>    

 




理解

           box-shadow阴影实现的理解

                       这种方法完全借助盒子阴影来达到指定效果,通过0.5px的阴影,让它达到类似0.5px边框的效果。


            ::after定位伪类实现的理解

                       这种方法直接设置0.5px的高度,高度同样允许小数px,我们生成了一个新元素,来改变它的高度,让它充当边框。


           transform 缩放实现的理解

                       利用缩放属性,我们设置一个1px边框,长度和宽度设置为被包裹子元素的两倍,当它缩小0.5的时候,就正好变成了子元素的宽高,1px的边框也缩小了一半变成了0.5px


           border-image: linear-gradient 边框线性渐变的理解    

                        这个其实是第二种属性的复杂版了,没有直接设置0.5px,而是设置了1px1上上面一半透明,来达到0.5px的边框效果,我们也可以直接设置1px的边框,然后同样透明0.5px,这个就不演示了。(这个属性有点复杂 后面会讲一下)


总结

                       第一二 四种没有使用border属性,通过其他属性来达到类似的边框效果,第三种使用了边框然后进行了效果的修改,第四种也有边框效果的变种写法。


相关文章
|
3天前
|
缓存 前端开发 JavaScript
高级前端常见的面试题?
【7月更文挑战第11天】 **高级前端面试聚焦候选人的技术深度、项目实战、问题解决及技术趋势洞察。涉及React/Vue生命周期、Redux/Vuex状态管理、Webpack优化、HTTP/HTTPS安全、性能提升策略、PWA、GraphQL、WebAssembly、安全性议题及项目管理。通过回答,展现候选人技术广度与应对复杂场景的能力。**
13 1
|
4天前
|
移动开发 前端开发 JavaScript
前端常见的面试题都有那些?
【7月更文挑战第10天】 前端面试涵盖HTML5新特性、CSS盒模型、JS事件传播、Vue的双向绑定、React生命周期、性能优化策略、浏览器解析流程及安全知识等。例如,HTML5新增video/audio元素、CSS选择器优先级计算、闭包功能、async/await处理异步、Vue通过Object.defineProperty实现数据绑定、React组件生命周期的关键阶段、前端优化如CDN和资源压缩,以及浏览器如何构建渲染树。面试还可能涉及XSS/CSRF防护和框架选择考量。准备面试需全面理解基础概念并结合实践经验。
8 0
|
13天前
|
前端开发 JavaScript UED
只会用插件可不行,这些前端动画技术同样值得收藏-CSS篇
只会用插件可不行,这些前端动画技术同样值得收藏-CSS篇
16 0
|
13天前
|
前端开发 JavaScript 编译器
如何在CSS中写变量?一文带你了解前端样式利器
如何在CSS中写变量?一文带你了解前端样式利器
18 0
|
13天前
|
JavaScript 前端开发
JS进阶篇(前端面试题整合)(三)
JS进阶篇(前端面试题整合)(三)
13 0
|
13天前
|
前端开发
前端 CSS 经典:模拟 material 文本框
前端 CSS 经典:模拟 material 文本框
10 0
|
13天前
|
前端开发
前端 CSS 经典:图层放大的 hover 效果
前端 CSS 经典:图层放大的 hover 效果
11 0
|
7天前
|
前端开发 UED
使用HTML和CSS创建响应式表格
在网页设计中,表格是一种组织和展示数据的有效方式。本文档将指导你如何使用HTML和CSS来创建一个既美观又响应式的表格,以便在不同设备和屏幕尺寸上都能良好显示。我们将涵盖基础的HTML表格结构,样式美化以及如何实现响应式布局,使得表格内容在小屏设备上也能清晰阅读
48 0
|
11天前
|
前端开发 JavaScript
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法