使用css3做0.5px的细线

CSS实现0.5px细线:DPR原理与五种实用画法详解 在移动端H5开发中,设计师常要求“0.5px”分割线,但直接写CSS小数像素值往往会导致线条变粗、消失或模糊。这背后关键在于CSS像素与物理像素的换算关系,即设备像素比(DPR)。高清屏上1个CSS像素可能对应2个或3个物理像素,因此真正要画的是“1个物理像素”的细线,而非固定0.5px。理解这一原理后,可通过transform缩放、box-shadow阴影、linear-gradient渐变、SVG矢量线等方法实现稳定细腻的细线效果。这些方案适用于不同场景:卡片边框、列表分割线、标签分隔或Windows高 阅读详情

Webapp中的CSS3实现 0.5px的细线

感觉很长时间没写过博客了,最近生活还算稳定,过得较为充实,所以又要开始写写东西了,一个是为了做些记录,是怕自己某一天,忘记了,回头翻翻博客,就会再次的拾起来,记忆,就是这样。

曾看过淘宝,京东,易迅,一号店等等电商的移动端网站,这些大的电商站的共同特点是做的精致,用户体验良好,其中在布局方面 , 0.5px的线看上去就比1px的线看上去要精致很多。

方法一:使用渐变来做

  • html代码:

    <div class="bd-t"></div>
    
  • css代码:

    .bd-t{
      position:relative;
    }
    
    .bd-t::after {
      content: " ";
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      height: 1px;
      background-image: linear-gradient(0deg, transparent 50%, #e0e0e0 50%);
    }
    
  • Be careful ! 注意此处有坑!!!:
    对于不同浏览器的兼容,我们需要使用不同的前缀如:

    -webkit-linear-gradient
    -ms-linear-gradient 
    -o-linear-gradient

    坑就在这些前缀里: 我们把代码里的height 1px 变成 100px , 参数同为 0deg, transparent 50%, #e0e0e0 50% 并使用最新版的chrome来测试 。

    linear-gradient 有如下结果:

    效果图

    经过一系列的测试总结,我们可以推理出下面的渐变方式:

    渐变方向

    webkit-linear-gradient 的代码效果图如下:

    效果图

    经总结,我们看到-webkit前缀的渐变方式为:

    渐变方向

    其他的前缀如果用到,还请小伙伴们自己来尝试填坑!

  • 说明:
    推荐这种写法,这是百度糯米移动站的做法(如果没改版的话):http://m.nuomi.com/ ,从上述代码的描述中,可以看到,为了实现盒子顶部边框0.5px的伪代码:border-top:0.5px solid #e0e0e0; 的效果,使用after,作为一个钩子,宽度100%,高度1px,背景渐变,一半透明,一半有颜色,这么干是可以的。同理,底部,左边和右边的细线,都是同一个道理了。当然,如果需要组合使用,盒子之间的嵌套使用,也是可以的,或者你有自己的想法(当然做法有很多种!)…

方式二: 使用缩放

  • html代码:

    <div class="bd-t"></div>
    
  • css代码:

    .bd-t{
      position:relative;
    }
    
    .bd-t:after{
      content: "  ";
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      height: 1px;
      background-color: #e0e0e0;
      /* 如果不用 background-color, 使用 border-top:1px solid #e0e0e0; */
      -webkit-transform: scaleY(.5);
      transform:scaleY(.5);
    }
    
    • 说明
      这是实现盒子上边框0.5px的做法, 不是很推荐这种做法,因为经过测试,一些手机端浏览器显示的不是太好。这种实现的原理是: 在Y轴方向上,压缩一半。就像上面注释的那样。
      如果你觉得效果不太好,这里有一个 fallback or workaround, whatsoever: 就是上面注释掉的那种做法:可以尝试使用border-top:1px solid #e0e0e0; 代替background-color的做法,京东就是这么做的(如果没改版的话): http://m.jd.com/
方式二的拓展 : 如果要实现四周全是0.5px的线条的话 :

html代码:

 <div class='bd-all'></div>

css代码:


  .bd-all{
      position:relative;
  }

 .bd-all:after{
      content: "  ";
      position: absolute;
      left: 0;
      top: 0;
      z-index:-1;
      width: 200%;
      height:200%;
      border:1px solid #e0e0e0;
      -webkit-transform-origin: 0 0;
      transform-origin: 0 0;
      -webkit-transform: scale(.5, .5);
      transform: scale(.5, .5);
 }

说明 :
这是实现一个盒子四周0.5px的做法, 如果加入border-radius圆角效果,会发现,有些手机会有圆角发虚的情况,不过影响不是很大。如果有两个盒子,上面一个盒子没有边框效果,下面盒子有边框效果,两个盒子一样宽,上下在一起的布局方式,你会发现,在手机上有时候会对不齐… 错开了0.5px,原因已经很明了了…还有那个z-index ,可以根据不同需求来调整使用,如果可以的话,不使用也是可以的。

方式三: 使用background-image和css3的九宫格裁减

京东之前是这么做的,现在已经不被使用了。具体做法,请看下面demo结构:

├─demo/ ························ demo 目录
        └─┬─ test.html  ··············· test.html 文件
        └─── pic.png ·················· png 图片文件

在test.html 中 有如下关键代码:

  • html 结构:

    <div class="bd-t"></div>
  • css 结构:

    .bd-t{
       position: relative;
    }
    .bd-t::after {
    content: " ";
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    border-top: 1px solid transparent;
    /* 下面用 stretch 和 round 都可以 */
    border-image: url('pic.png') 2 1 1 1 stretch; 
    -webkit-border-image: url('pic.png') 2 1 1 1 stretch;
    }
    
  • 而 pic.png 的九宫格切法,如下图:

    这里写图片描述

  • 具体有关 border-image 的用法,网上有很多:

    • w3c 上的这个讲的不是很具体:http://www.w3school.com.cn/cssref/pr_border-image.asp

    • 在 MDN 上 有明确的介绍,并且有很多配图,包括兼容性等等:https://developer.mozilla.org/en-US/docs/Web/CSS/border-image

    • 但是不推荐这种写法,毕竟图片质量比较大,能用代码解决的,不用图片。在这里border-width 是 1px , 但是 背景是有2px的距离,所以在1px的border-top上,显示出有颜色的高度就是0.5px, 同理,底边,左边和右边的0.5px,也都很容易实现。 这个就是css3的魅力体现(这个现在兼容性也不是很好,在一些较低端的安卓浏览器和一些版本的safari 支持的也不是很好)。

方式四 (推荐): weui的实现方式 :

这是一款微信团队开发的UI 组件 详情见: weui , 它的使用方式是这样的:

.weui-cell:before{
   content: " ";
   position: absolute;
   left: 0;
   top: 0;
   right: 0;
   height: 1px;
   border-top: 1px solid #D9D9D9;
   color: #D9D9D9;
   -webkit-transform-origin: 0 0;
   transform-origin: 0 0;
   -webkit-transform: scaleY(0.5);
   transform: scaleY(0.5);
}

方式五: 使用同周边相似的浅色,利用视觉效果,让用户产生错觉

  • 这个就考验设计师的功力了 :)

其他说明:

  • 不是很推荐使用渐变来做 , 在移动设备上可以看到,但在一些浏览器上看不到,不便于调试。

扩展

扩展: 更多花式渐变作为参考(内容太多,如果你能记住的话):

http://www.runoob.com/css3/css3-gradients.html

http://www.zhangxinxu.com/wordpress/2013/09/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3css3-gradient%E6%96%9C%E5%90%91%E7%BA%BF%E6%80%A7%E6%B8%90%E5%8F%98/

大学计算 - NumPy库的矩阵运算 实训答案 本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。 阅读详情

相关推荐

C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

三千幻想乡 1万+

【CSS】设置0.5px的边框宽度

直接写border:0.5px solid #ccc;总结:目前推荐的是伪元素+tranform缩放的方法,相对灵活一点,可以针对不同元素进行设置。

qing_小诺的博客 2408

告别黑窗口:XShell+X11转发图形化界面的5分钟保姆级教程(附Xming配置)

本文详细介绍了如何使用XShell和X11转发技术快速实现Linux图形化界面的远程访问。通过5分钟快速配置指南,包括服务端设置、客户端工具选择及XShell+Xming的完美配置,帮助用户高效运行GUI应用程序,提升远程工作效率。特别适合需要图形化操作的开发者和运维人员。

weixin_29223603的博客 328

如何用css3画一根优雅的0.5px细线

利用细线布局、区分页面是常用的手段。一般UI为了美观都会采用 0.5 px 而不是 1px 的细线。而这就造成了问题:由于屏幕和设计稿的分辨率转换,如果在border中直接定义为0.5 px, 会造成有时候细线被抹杀成 0 px,从而看不到, 如果定义为 1px, 则实际显示的时候会变成 2px, 就失去了UI设计细线的原意。那么,该如何画一根优雅的 .5px 细线呢? 这可以用css3的tra...

凝视深渊 8809

单细胞 | pySCENIC·转录因子分析(二)

接上一篇,pySCENIC分析完之后就可以进行可视化了,个人认为最重要的有三个图:rss点图,rank图,转录因子表达水平热图,3个图结合着看。3.可视化rank图,可以自己改一下plotRSS_oneSet参数让图更好看一点。4. regulon表达水平热图,转录因子表达水平同理,得到的图类似只是输入不一样。2.可视化点图:寻找cluster特异性转录因子。1.loom文件读入R,提取数据。

生信练习生 4288

AI Pika 生成进击的巨人动漫分镜案例

AI Pika 生成进击的巨人动漫分镜案例 Pika 是一个使用AI生成和编辑视频的平台。

独立开发,substack顶级编辑 2576

让边框线变细

常见的边框线 使用1px 但是 实际效果是显示的很宽,在苹果设备上 1px 会变成2px ,如果想要border变细,常用最简单的方法: border: solid #eee thin; 效果 手机大小: 放大以后效果: ...

马优晨 7073

通义千问对接FreeSWITCH实现大模型呼叫中心

通义千问是由阿里云开发的大规模语言模型,具备优秀的自然语言处理能力,支持文本生成、问答对话、摘要提取等多种任务。它不仅拥有丰富的知识储备,还能根据上下文灵活调整回答策略,适用于各种复杂场景下的自动化交流。FreeSWITCH是一个开源的多媒体通信服务器,提供了包括VoIP通话、即时消息传递在内的多种通信服务。它的模块化设计允许开发者根据实际需求定制功能,广泛应用于企业级通信系统中。通过集成通义千问,FreeSWITCH能够实现更智能的客户服务体验。

技术永不眠 Q:53195017 1499

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

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

m0_62360527的博客 7506

置换矩阵、转置矩阵以及向量空间、子空间

置换矩阵、转置矩阵以及向量空间、子空间导读置换矩阵 导读 MIT矩阵分析课程之后的的二篇笔记。

qq_44677482的博客 1673

Python反爬实战|动态渲染+高可用IP代理集群,稳定爬取京东/淘宝10万+商品数据

做Python电商爬虫的同学,应该都对京东、淘宝的反爬机制深有体会——这两个平台的反爬体系,堪称国内网站的天花板,远比普通资讯、政务网站的反爬严格十倍不止。用requests库请求商品列表,返回的永远是只有骨架的空HTML,商品标题、价格、销量全是前端JS异步加载,抓包分析接口发现参数全是加密的signtoken,解密成本无限高;用selenium开无头浏览器爬取,刚爬3-5页就触发风控,页面直接返回403,IP被封禁,甚至连Cookie都直接失效;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1586

css border设置0.5px

设置boder:1px solid #64f9fa 会向上取整,不会有0.5的效果。

Web_Notes的博客 766

LPDDR5 学习笔记02:上电初始化与下电时序

LPDDR5上电初始化流程需严格遵守时序要求:首先确保电源按顺序上电(VDD1→VDD2H→VDD2L→VDDQ),RESET_n保持低电平至电压稳定。初始化包含自动ZQ校准、命令总线训练(CBT)、WCK2CK电平校准和DQ总线训练四个关键阶段,需完成全部训练后才能正常操作。在双电源轨系统中,须在CBT前设置MR13寄存器。复位操作需保持RESET_n低电平至少tPW_RESET时间,断电时要求CS保持低电平且电源电压有序下降。非受控下电时电压斜率需低于0.5V/μs,器件生命周期内不得超过400次非受控

一只豌豆象的博客 2044

css3 使用SVG做0.5px 的边框细线

.HalfPixelLine{ background: repeat-x top left url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1' height='1'><rect fill='red' x='0' y='0' width='1' height='0.5...

weixin_34162695的博客 284

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

利用CSS3制作0.5px的细线

在移动端,有时需要制作一条细线;我们就会不由自主的想到样式: height: 1px; /*或者*/ border-top: 1px solid #CCC; 很简单,满足了需求。然而,在移动设备上1px的细线看起来好像还是很粗,不是那么的精致,体验不是很好。那么,样式写成: height...

cicheng1407的博客 852

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

css:移动端实现1px、0.5px的细线

* 通过伪元素实现 0.5px border *//* 通过伪元素实现 0.5px 细线 *//* dpr适配可以这样写 *//* 实现 1px 细线 *//* 为了与原元素等大 */

彭世瑜的博客 1835

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

CSS篇:极致细节的追求:6种实现0.5px细线的现代方案

在Retina等高PPI屏幕普及的今天,传统的1px边框往往显得过于粗犷。设计师追求的极致细节需要我们实现真正的"细线"效果。特别是在制作分割线、边框等元素时,0.5px的线条能够带来更加精致的视觉体验。下面我们就来探索各种实现方案。

欢迎来到我的前端博客!这里汇集了关于前端开发的最新技术、实用工具和经验分享。我将为你提供详细的教程、代码示例和实战案例,帮助你掌握Web开发的核心概念和技能。不论你是初学者还是有经验的开发者,这个博客都适合你。 1092

CSS实现0.5px细线的5种方案与实战技巧

在响应式网页设计中,像素级精度控制是提升UI质感的关键技术。CSS像素与物理像素的映射关系通过设备像素比(DPR)实现,在Retina等高密度屏幕上,1个CSS像素可能对应多个物理像素。这种差异导致传统1px边框在高PPI设备上显得过粗,破坏了现代设计追求的极简美学。通过transform缩放、CSS渐变、伪元素等方案可以实现0.5px细线效果,其中transform方案具有最佳兼容性,而SVG方案能提供最锐利的显示效果。这些技术在移动端H5页面、后台管理系统等需要精细边框的场景中尤为重要,能显著提升产品的

weixin_33483304的博客 308

CSS篇:CSS黑科技:1px边框变0.5px的5种方法

在移动端开发中,设计师常常要求实现0.5像素(物理像素)的细边框,但在标准CSS中最小单位是1px(逻辑像素)。如何在Retina屏等高清设备上实现真正的细线效果?本文将揭秘5种实用方案,帮你完美解决这个经典难题。

欢迎来到我的前端博客!这里汇集了关于前端开发的最新技术、实用工具和经验分享。我将为你提供详细的教程、代码示例和实战案例,帮助你掌握Web开发的核心概念和技能。不论你是初学者还是有经验的开发者,这个博客都适合你。 1537

CSS3实现0.5px的边框+渐变+伪元素补充

面试的时候被问到如何使用css3实现0.5的边框,当时脑袋蒙圈,想着直接设置border为0.5px,但肯定是不可以的。 思路: 将元素的伪类高度设为1px,使用css3的渐变(linear-gradient),50%有颜色,50%透明,个人感觉思路没有问题,不知为何页面不展示线条。 伪类 + scaleY(0.5) 实现边框为0.5px 伪类+linear-gradient <!D...

weixin_44471622的博客 1062

CSS 0.5px线超全指南:从原理到实战,细线不再翻车

在Retina等高清屏下,CSS像素与物理像素的换算关系常让1px边框显得过粗,UI要求的'0.5px线'本质是让线条只占用一个物理像素。理解像素的双重身份后,借助transform缩放、box-shadow、线性渐变或SVG等方案,可在不同浏览器上稳定渲染出锐利细线。这些技术适用于分割线、卡片边框、表格底边、导航下划线等常见场景,既能避免'border: 0.5px'被舍入或忽略的兼容性坑,又能保证视觉统一。从原理出发,横向拆解五种主流画法的取舍,提供可直接复制的代码与调参细节,并分享封装通用工具类及与r

weixin_29009501的博客 285

CSS实现0.5px细线的5种方法及兼容性指南

在响应式网页设计中,像素级精度控制是提升UI质感的关键技术。CSS像素与物理像素的映射关系由设备像素比(DPR)决定,这为亚像素渲染提供了理论基础。通过transform缩放、伪元素、线性渐变等技术手段,开发者可以在高DPI设备上实现0.5px的精细线条,显著提升界面视觉效果。这些方法在移动端H5页面、电商列表分割线等场景中具有重要应用价值,其中transform方案凭借92%的浏览器兼容率成为工程首选。随着SVG和CSS渐变等技术的成熟,亚像素渲染已能兼顾视觉效果与渲染性能。

weixin_30516429的博客 270

uv-line 线条组件全解析:从 0.5px 细线原理到跨端分隔线实战

uv-line 是 uv-ui 生态中专门用于绘制分割线条的轻量级组件,它以「一根 `view` + 一个计算样式」的极简实现,同时支持横向与竖向两种方向、实线与虚线两种样式,并能借助 `transform` 缩放实现跨端一致的高清 0.5px 细线。本文以 `uni_modules/uv-line` 的版本记录为主线,结合组件源码、属性定义与仓库内示例页面,完整讲解该组件的用法、每一项配置参数、

gitblog_00747的博客 694

html边框直线,HTML+CSS入门 CSS 0.5px细线边框详解

本篇教程介绍了HTML+CSS入门 CSS 0.5px细线边框详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门。<细线边框的具体实现方法有:伪元素缩放或渐变,box-shadow模拟,svg画线,border-image裁剪等。要实现小于1px的线条,有个先决条件:屏幕的分辨率要足够高,设备像素比要大于1,即css中的1个像素对应物理屏幕中1个以上的像素点。对于普通电脑,...

weixin_39787397的博客 545

CSS 像素≠物理像素:0.5px 效果的核心密码是什么?

所有 “真实 0.5px 效果”(1 物理像素)都依赖 DPR≥2 的高清屏(利用 CSS 像素与物理像素的映射关系);核心逻辑:不依赖像素映射的精准计算,而是通过视觉欺骗或矢量渲染,让线条看起来比 1px 细(DPR=1 时无法实现 1 物理像素,只能模拟)。核心逻辑:利用 DPR≥2 的像素映射关系,让 CSS 像素经过计算后,刚好对应 1 个物理像素。(二)DPR≥2 最优,DPR=1 可模拟:视觉层面实现 “细于 1px”(一)仅 DPR≥2 生效:直接让 CSS 像素对应 1 个物理像素。

2501_92872533的博客 1033

HTML初学者看过来-CSS画0.5px线的妙招

前几天我刚接了个需求,UI小姐姐拿着MacBook Pro凑过来,指着设计稿上那条若隐若现的分割线说:"你看,这个层次感,这个细腻度,1px太粗了,我要的是那种似有若无、犹抱琵琶半遮面的感觉。Chrome和Safari在高清屏上确实能渲染出0.5px的效果,但在Firefox上,它会直接给你四舍五入成1px,甚至某些版本的IE(没错,我说的就是那个阴魂不散的东西)会直接忽略这个值,显示成0px——对,直接消失,就问你怕不怕。如果报告里说你的页面有过多的绘制区域,那可能是这些细线导致的。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 555
上一篇: JSONP跨域问题演示
下一篇: ({}+{}).length
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值