返回顶部
首页 > 资讯 > 前端开发 > node.js >css中如何解决border-radius border部分显示问题
  • 653
分享到

css中如何解决border-radius border部分显示问题

2024-04-02 19:04:59 653人浏览 安东尼
摘要

这篇文章主要介绍CSS中如何解决border-radius border部分显示问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、圆角边框显示不全问题出现条件应该都知道,bord

这篇文章主要介绍CSS中如何解决border-radius border部分显示问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、圆角边框显示不全问题出现条件

应该都知道,border-radius:50%可以让元素正方形元素表现为正圆,深入理解其表现机制可参见我之前文章:“css3 border-radius知多少?”。

如果元素设置了border边框,则会表现为一个正圆圈圈,类似这样:

css中如何解决border-radius border部分显示问题

但有时候,border边框的这个圈圈会在边缘处发生剪裁,不是一个完美的圈圈了,类似下面这样:

css中如何解决border-radius border部分显示问题

圈圈的左侧不是圆的了,而是像被什么东西一刀切下去,成了直直的了。

如果是在retina屏幕下,则“一刀切”的效果可能还要更加明显,上下左右都有可能发生剪裁。

出现这种渲染问题,需要满足下面两个条件:

  1. 元素的透明度opacity不是1;

  2. 元素的位置并不是完美起止于屏幕的像素点上;

第一个条件很好理解;那第二个条件是什么意思呢?

对于普通的显示器,设备像素比devicePixelRatio1,也就是最小显示单位(渲染单位)是1像素。如果某一个元素的起点是从0.5像素开始的,那这个元素的开始位置就不是正好在屏幕的像素点上,而是中间。

这其实是个悖论,既然最小渲染单位是1像素,何来从0.5像素开始的定位呢?确实,在过去,几乎所有CSS属性设置的小数值的最终表现都是以整数像素体现(如margin: .5px = margin: 1px),在老IE时代更堪称死板(425%宽度浮动元素可能最后一个会掉下来)。但是进入CSS3时代后,情况就开始发生变化,着重要点名的就是transfORM变换。由于transform变换基于矩阵计算,无论是旋转还是拉伸,其点坐标十有八九一定是N位数的小数。如果此时我们的浏览器按照最小的1像素开始渲染,那图形的边缘那就是满满的锯齿,渲染效果会非常糟糕(一开始的transform变换效果真就这么糟糕)。浏览器厂商一看,我去,这效果挫到我自己都看不下去,于是下功夫开始提升渲染体验。弄了一套算法,对非整数像素点边缘进行柔化,也就是虽然还是占据的1像素的格子,但是边缘像素点通过半透明等特殊处理,我们视觉上看就好像元素开始于0.5像素的位置。

也正是由于这个原因,当我们使用对元素进行非整数位置的translate位移的时候,元素的边缘会有一点模糊的感觉。

对于iMac这种5K显示屏幕,最小像素点实际上可以小到0.2像素,也就是就是translate移动0.2像素,元素边缘也不会柔化模糊,但是,移动0.5像素就不一定了。

因此,如下的html和CSS代码就可以让圆角边框不规整:

<span class="ele"></span>
.ele {
    display: inline-block;
    width: 40px; height: 40px;
    border: 1px solid #fff;
    border-radius: 50%;transform: translate(.5px, 0);     opacity: 0.6;}

根据我的测试,除了Chrome浏览器有圆角边框不规整的问题外,IE浏览器的渲染也同样有问题,表现为右侧边缘明显衰弱:

css中如何解决border-radius border部分显示问题

但是,如果opacity设置为1,则无论IE浏览器还是Chrome浏览器,又变成完美的圆圈圈了,如下(截自IE):

css中如何解决border-radius border部分显示问题

Firefox则表现符合预期。

二、如果解决border-radius border部分显示问题?

知道问题出现触发的条件,那问题解决其实已经解决了一半了。

2种方法:

1. 元素尺寸和位置都在都是整数像素

然而很多时候这种方法并不切实际,尤其对于复杂布局,例如我们使用calc计算对元素宽度定位时候,或者line-height使用不容易计算的小数时候,或者基于rem的布局等等,想要强制元素尺寸和位置都是整数并不太容易。

2. 不使用opacity实现半透明

既然我们的问题出现与opacity不是1有关,那我们就不使用opacity实现半透明,采用其他的方法代替。

如果我们想使一个边框变成半透明,除了opacity外,我们还可以使用RGBA或者HSLA颜色。

例如,上面是一个例子的CSS代码换成:

.ele {
    display: inline-block;
    width: 40px; height: 40px;
    border: 1px solid hsla(0,0%,100%,.6);border-radius: 50%;transform: translate(.5px, 0);}

则边框不圆润的问题就消失了,有专门的演示页面,您可以狠狠地点击这里:半透明圆角边框剪裁问题示意demo

结果对比效果如下图:

css中如何解决border-radius border部分显示问题

Nice!

以上是“css中如何解决border-radius border部分显示问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: css中如何解决border-radius border部分显示问题

本文链接: https://lsjlt.com/news/94032.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • css中如何解决border-radius border部分显示问题
    这篇文章主要介绍css中如何解决border-radius border部分显示问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、圆角边框显示不全问题出现条件应该都知道,bord...
    99+
    2024-04-02
  • css中border不显示如何解决
    这篇文章给大家介绍css中border不显示如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。css写了边框显示不全或不显示div{width: 100%;border: solid ...
    99+
    2023-06-14
  • 如何解决border-radius值设置的问题
    这篇文章将为大家详细讲解有关如何解决border-radius值设置的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题记录今天本打算要完成一个类似于进度条的小组件,...
    99+
    2024-04-02
  • css中border-radius如何兼容IE
    小编给大家分享一下css中border-radius如何兼容IE,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 目前而言fir...
    99+
    2024-04-02
  • css中的border-radius属性如何使用
    这篇文章主要介绍css中的border-radius属性如何使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   CSS3border-radius属性   作用:border...
    99+
    2024-04-02
  • 一个属性border-collapse如何解决Table的边框问题
    这期内容当中小编将会给大家带来有关一个属性border-collapse如何解决Table的边框问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 ...
    99+
    2024-04-02
  • 怎么使用CSS属性border-collapse解决table的边框问题
    小编给大家分享一下怎么使用CSS属性border-collapse解决table的边框问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解...
    99+
    2024-04-02
  • CSS背景显示范围的问题如何解决
    今天小编给大家分享一下CSS背景显示范围的问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • vue中svg部分不显示如何解决
    这篇“vue中svg部分不显示如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue中svg部分不显示如何解决”文章吧...
    99+
    2023-07-06
  • word文档中分数的显示问题如何解决
    要解决Word文档中分数的显示问题,可以尝试以下几种方法:1. 使用分数格式:在Word文档中,可以选择使用分数格式来显示分数。在输...
    99+
    2023-10-07
    word
  • VB.NET如何解决DataGrid显示问题
    这篇文章将为大家详细讲解有关VB.NET如何解决DataGrid显示问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、程序功能当上传图片大小超过8K或格式不符时禁止上传,上传通过之后,用VB.NET ...
    99+
    2023-06-17
  • 如何解决div style属性中设置其border无效
    这篇文章主要介绍“如何解决div style属性中设置其border无效”,在日常操作中,相信很多人在如何解决div style属性中设置其border无效问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2024-04-02
  • php标题显示中文乱码问题如何解决
    本篇内容介绍了“php标题显示中文乱码问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php标题显示中文乱码的解决办法:1、在HT...
    99+
    2023-06-20
  • 如何解决cmd显示node不是内部命令的问题
    这篇文章主要介绍了如何解决cmd显示node不是内部命令的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 c...
    99+
    2024-04-02
  • CSS长英文单词的页面显示问题如何解决
    本篇内容介绍了“CSS长英文单词的页面显示问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  ...
    99+
    2024-04-02
  • 如何解决Mongodb中关于GUID的显示问题
    这篇文章主要讲解了如何解决Mongodb中关于GUID的显示问题,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。发现问题最近将一个程序的存储迁移到了Mongodb,发现了一个现象...
    99+
    2024-04-02
  • 如何解决Mysql不能显示中文的问题
    本篇内容主要讲解“如何解决Mysql不能显示中文的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决Mysql不能显示中文的问题”吧!Mysql不能显示...
    99+
    2024-04-02
  • BootStrap中如何解决Table隐藏后显示问题
    这篇文章主要介绍了BootStrap中如何解决Table隐藏后显示问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开始的时候先把table...
    99+
    2024-04-02
  • 如何解决PHP部分乱码问题
    乱码是在Web开发过程中常见的问题之一,特别是在PHP编程中。如果您在PHP页面上看到了乱码,您可以采取一些方法来解决这个问题,这篇文章会详细介绍如何解决PHP部分乱码问题。什么是乱码?乱码是指在HTTP请求和响应中传递的数据中包含了无法被...
    99+
    2023-05-14
    php 乱码
  • CSS样式如何解决文字过长显示省略号问题
    这篇文章主要介绍了CSS样式如何解决文字过长显示省略号问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、CSS样式 解决文字过长显示省略...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作