广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >如何解决移动端1px边框的问题
  • 211
分享到

如何解决移动端1px边框的问题

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

这篇文章主要为大家展示了“如何解决移动端1px边框的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决移动端1px边框的问题”这篇文章吧。当然了,在这之

这篇文章主要为大家展示了“如何解决移动端1px边框的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决移动端1px边框的问题”这篇文章吧。

当然了,在这之前先整理了与这些方法相关的知识:物理像素、设备独立像素、设备像素比和viewport。

物理像素、设备独立像素和设备像素比

CSS中我们一般使用px作为单位,需要注意的是,CSS样式里面的px和物理像素并不是相等的。CSS中的像素只是一个抽象的单位,在不同的设备或不同的环境中,CSS中的1px所代表的物理像素是不同的。在PC端,CSS的1px一般对应着电脑屏幕的1个物理像素,但在移动端,CSS的1px等于几个物理像素。

物理像素(physical pixel)

物理像素又被称为设备像素、设备物理像素,它是显示器(电脑、手机屏幕)最小的物理显示单位,每个物理像素由颜色值和亮度值组成。所谓的一倍屏、二倍屏(Retina)、三倍屏,指的是设备以多少物理像素来显示一个CSS像素,也就是说,多倍屏以更多更精细的物理像素点来显示一个CSS像素点,在普通屏幕下1个CSS像素对应1个物理像素,而在Retina屏幕下,1个CSS像素对应的却是4个物理像素(参照下文田字示意图理解)。

设备独立像素(device-independent pixel)

设备独立像素又被称为CSS像素,是我们写CSS时所用的像素,它是一个抽像的单位,主要使用在浏览器上,用来精确度量WEB页面上的内容。

设备像素比(device pixel ratio)

设备像素比简称为dpr,定义了物理像素和设备独立像素的对应关系:设备像素比 = 物理像素 / 设备独立像素。

CSS的1px等于几个物理像素,除了和屏幕像素密度dpr有关,还和用户缩放有关系。例如,当用户把页面放大一倍,那么CSS中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,CSS中1px所代表的物理像素也会减少一倍。关于这点,在文章后面的1px细线问题部分还会讲到。

1px细线问题

在上文我们已经知道,CSS像素为1px宽的直线,对应的物理像素是不同的,可能是2px或者3px,而设计师想要的1px宽的直线,其实就是1物理像素宽。

对于CSS而言,可以认为是border: 0.5px;,这是多倍屏下能显示的最小单位。然而,并不是所有手机浏览器都能识别border: 0.5px,有的系统里,0.5px会被当成为0px处理,那么如何1px细线问题呢?

使用border-image实现

根据需求选择图片,然后根据css的border-image属性设置。代码如下:

div
{
 -moz-border-image:url(/i/border.png) 30 30 stretch; 
 -webkit-border-image:url(border.png) 30 30 stretch; 
 -o-border-image:url(border.png) 30 30 stretch; 
 border-image:url(border.png) 30 30 stretch;
}

优点:可以设置单条、多条表框。缺点:更换颜色和样式麻烦,某些设备上会模糊。

使用background-image实现

background-image 跟border-image的方法一样,你要先准备一张符合你要求的图片。优缺点与border-image一样。

 .background-image-1px {
 background: url(../img/line.png) repeat-x left bottom;
 -webkit-background-size: 100% 1px; background-size: 100% 1px;
}

使用box-shadow模拟边框

 .box-shadow-1px {
   box-shadow: inset 0px -1px 1px -1px #c8c7cc;
 }

优点:代码少,兼容性好。缺点:边框有阴影,颜色变浅。

上面三种方式效果并不是太好

伪元素+transform

构建1个伪元素, border为1px, 再以transfORM缩放到50%。


.border-1px {
    position: relative;
}
@media screen and (-webkit-min-device-pixel-ratio: 2) {
    .border-1px:before {
        content: " ";
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        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);
    }
}

优点:可以满足所有场景,且修改灵活。缺点:对于已使用伪类的元素要多层嵌套。

js计算rem基准值和viewport缩放值


var dpr, rem, scale;
var docEl = document.documentElement;
var fontEl = document.createElement('style');
var metaEl = document.querySelector('meta[name="viewport"]');
dpr = window.devicePixelRatio || 1;
rem = 100 * (docEl.clientWidth * dpr / 750);
scale = 1 / dpr;
// 设置viewport,进行缩放,达到高清效果
metaEl.setAttribute('content', 'width=' + dpr * docEl.clientWidth + ',initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale + ',user-Scalable=no');
// 设置data-dpr属性,留作的css hack之用,解决图片模糊问题和1px细线问题
docEl.setAttribute('data-dpr', dpr);
// 动态写入样式
docEl.firstElementChild.appendChild(fontEl);
fontEl.innerhtml = 'html{font-size:' + rem + 'px!important;}';

用JS根据屏幕尺寸和dpr精确地设置不同屏幕所应有的rem基准值和initial-scale缩放值,这个JS方案已经在完美解决了1px细线问题

以上是“如何解决移动端1px边框的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: 如何解决移动端1px边框的问题

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决移动端1px边框的问题
    这篇文章主要为大家展示了“如何解决移动端1px边框的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决移动端1px边框的问题”这篇文章吧。当然了,在这之...
    99+
    2022-10-19
  • 如何解决移动端1px边框
    这篇文章主要介绍了如何解决移动端1px边框,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在移动端开发时,经常会遇到在视网膜屏幕中元素边框变粗的问题。1px 边框问题的由来苹果...
    99+
    2023-06-08
  • 如何解决移动端Html5页面中1px边框的问题
    这篇文章将为大家详细讲解有关如何解决移动端Html5页面中1px边框的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题提出这是一个比较老的问题了,我第一次注意到的时候,是UI设计师来找我麻烦,emm...
    99+
    2023-06-09
  • PyQt5项目中无边框后窗口出现移动问题如何解决
    这篇文章将为大家详细讲解有关PyQt5项目中无边框后窗口出现移动问题如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。判断鼠标左键是否被按下,如果按下则将flag设为True并获取当前的...
    99+
    2023-06-08
  • 如何解决移动端吸顶fixbar的问题
    这篇文章主要介绍如何解决移动端吸顶fixbar的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!需求背景经常会有这样的需求,当页面滚动到某一个位置时,需要某个页面元素固定在屏幕顶部...
    99+
    2022-10-19
  • css3如何解决移动端卡顿的问题
    这篇文章主要介绍css3如何解决移动端卡顿的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、使用css,jquery,canvas制作动画Canvas优点:性能好,强大,支持多数浏览器(除了IE6、IE7、IE...
    99+
    2023-06-08
  • 如何解决PC端和移动端自适应问题
    这篇文章主要介绍了如何解决PC端和移动端自适应问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。做网页时,我们通常需要考虑到不同电脑屏幕尺寸,以及不同手机屏幕大小等问题,解决...
    99+
    2023-06-08
  • css如何使用:not() 解决lists边框的问题
    小编给大家分享一下css如何使用:not() 解决lists边框的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用:not() 解决lists边框的问题在w...
    99+
    2023-06-27
  • 如何解决移动端小图标模糊的问题
    这篇文章将为大家详细讲解有关如何解决移动端小图标模糊的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言之前给大家讲到图片和文字垂直方向不对齐的问题,其中举的小例子中用到了一个小图标,这个小图标我用的...
    99+
    2023-06-08
  • 如何解决html5在移动端的屏幕适应问题
    这篇文章主要讲解了“如何解决html5在移动端的屏幕适应问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决html5在移动端的屏幕适应问题”吧! ...
    99+
    2022-10-19
  • 如何解决canvas在移动端绘制模糊的问题
    小编给大家分享一下如何解决canvas在移动端绘制模糊的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!由于一些移动端的兼容性原因,我们某个项目需要前端将pdf...
    99+
    2023-06-09
  • 如何解决移动端HTML5音频与视频的问题
    小编给大家分享一下如何解决移动端HTML5音频与视频的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在研究用视频代替动画,用视频代替精灵动画,我们称这种视...
    99+
    2023-06-09
  • 一个属性border-collapse如何解决Table的边框问题
    这期内容当中小编将会给大家带来有关一个属性border-collapse如何解决Table的边框问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 ...
    99+
    2022-10-19
  • 如何解决基于Vue/React项目移动端适配的问题
    这篇文章给大家分享的是有关如何解决基于Vue/React项目移动端适配的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。px2rem或postcss-px2rem在移动端中,为...
    99+
    2022-10-19
  • JSBridge框架如何解决通信问题以及实现移动端跨平台开发
    这期内容当中小编将会给大家带来有关JSBridge框架如何解决通信问题以及实现移动端跨平台开发,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、跨平台开发是趋势目前主流的移动端平台主要是Android和i...
    99+
    2023-06-05
  • 移动端touch拖动和click事件冲突问题解决
    目录实现效果准备实现问题分析解决通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 可以点击拖动,然后吸附在窗口边缘点...
    99+
    2022-11-13
  • 如何解决搜索框和搜索按钮button边框不能重合的问题
    这篇文章主要介绍了如何解决搜索框和搜索按钮button边框不能重合的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。今天在用百度页面做练习的时候突然发现,尽管设置了搜索框和...
    99+
    2023-06-08
  • html如何解决IE6浮动元素的双倍边距问题
    这篇文章主要为大家展示了“html如何解决IE6浮动元素的双倍边距问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html如何解决IE6浮动元素的双倍边距问题”这篇文章吧。解决IE6 的浮动元...
    99+
    2023-06-27
  • JS如何解决移动web开发手机输入框弹出的问题
    这篇文章主要介绍JS如何解决移动web开发手机输入框弹出的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在移动web开发中和pc端不同的是,手机的输入是软键盘,这样就会有个问题,...
    99+
    2022-10-19
  • vue项目中使用lib-flexible如何解决移动端适配的问题
    这篇文章将为大家详细讲解有关vue项目中使用lib-flexible如何解决移动端适配的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一部分:项目中引入lib-fl...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作