前言

在移动端中,宽度100%,1px的线看起来要比pc端中宽度100%,1px的线粗,

那是因为css中的1px并不等于移动设备(物理像素)的1px。物理像素显示是1个像素代表2个像素,所以出现为2px

所以我们在移动端中为了让1px的线“看起来”苗条些,会采用一些手段。

解决办法

实现1px的线

方法一:transform

在移动端中,我们对宽度100%,1px的线进行改造,将其宽度设为200%,高度不变,之后使用transform对其缩放50%。

.line{
width:200% ;
height:1px ;
transform:scale(.5) ;
-ms-transform:scale(.5) ;
-o-transform:scale(.5) ;
-webkit-transform:scale(.5) ;
-moz-transform:scale(.5) ;
transform-origin:top left ;
}

这样苗条的线就出现了!

实现1px的边框

方法一:伪类 + transform

原始border:去掉border,设置相对定位

新border:设置 :before 或者 :after 重做 border ,并使用 transform 的 scale 缩小一半,设置绝对定位

.scale-1px{
  position: relative;
  width:100px;

  height:100px;
  border:none;
}
.scale-1px:after{
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  border: 1px solid #000;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  width: 200%;
  height: 200%;
  -webkit-transform: scale(0.5);
  transform: scale(0.5);
  -webkit-transform-origin: left top;
  transform-origin: left top;

}

优点:

  • 所有场景都能满足

  • 支持圆角(伪类和本体类都需要加border-radius)

缺点:

对于已经使用伪类的元素(例如clearfix),可能需要多层嵌套

方法二:-webkit-min-device-pixel-ratio + 媒体查询

media query对应devicePixelRatio有个查询值-webkit-min-device-pixel-ratio, css可以写成这样

.border { border: 1px solid #999 }

@media screen and (-webkit-min-device-pixel-ratio: 2) {

.border { border: 0.5px solid #999 }

}

@media screen and (-webkit-min-device-pixel-ratio: 3) {

.border { border: 0.333333px solid #999 }

}

缺点:

  • 安卓与低版本IOS不适用

实现边框宽度为1px,宽高各为父元素

方法一:伪类 +  transform

.box1 {
            position: relative;
            border: none;
            height: 100px;
            width: 100px;
            text-align: center;
        }
.box1 div::after {
            content: '';
            border:solid 1px aqua;
            position: absolute;
            left: -50%;
            top: -50%;
            bottom: -50%;
            right: -50%;
            -webkit-transform: scale(.5);
            transform: scale(.5);
            box-sizing: border-box;
        }
<div class="box1">
        <div></div>
</div>

移动端实1px细线方法的更多相关文章

  1. 移动端高清适配方案(解决图片模糊问题、1px细线问题)

    本文介绍了移动端适配的3种方法,以及移动端图片模糊问题和1px细线问题的解决方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. >> ...

  2. 移动端1px细线解决方案总结

    现在的PM和UI总以看app的眼光看html5, html页面要做的专业美观,而且必须很精细. 去年的时候UI就告诉我h5上的边框线太粗,把整站都给拉low了. 当时工期紧就没太在意1px粗细, 好在 ...

  3. 手机端1px细线公共类

    手机端1px细线公共类 .borderBottom1px{ position: relative; } .borderBottom1px:after{ content: ""; p ...

  4. 移动端 CSS 1px 问题及解决方案

    移动端 CSS 1px 问题及解决方案 viewport & transfrom: scale viewport 的 initial-scale 设为 1 UI 设计稿用rem 和 trans ...

  5. 移动端1px细线的处理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 移动端1px细线解决方案--利用transform缩放方式

    移动端1px会显示为2px; 解决方式很多,这里介绍比较常用的一种方式--css的transform属性缩放 1. 上边框 相当于 border-top <div class="bor ...

  7. css笔记--web端小于1px设计的处理方法

    HTML代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  8. 移动端1px细线问题

    1可以用伪类实现 .con{position: relative;.con:before { content: " "; position: absolute; left: 0; ...

  9. 在移动端实现1px的边框

    由于分辨率 DPI 的差异,高清手机屏上的 1px 实际上是由 2×2 个像素点来渲染,有的屏幕甚至用到了 3×3 个像素点 所以 border: 1px 在移动端会渲染为 2px 的边框 与设计图产 ...

随机推荐

  1. mysql 数据库备份 -- (定时任务)

    场景: 我们经常需要对数据库备份 方式一:mysql 数据备份方式 在linux 备份方式  通常采用 mysqldump -uroot -ppassword  --database 数据库名 > ...

  2. Java如何对一个对象进行深拷贝?

    在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝.浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化.而深拷贝则是拷贝了源对象的所有值,所以即 ...

  3. Note 1 for <Pratical Programming : An Introduction to Computer Science Using Python 3>

    Book Imformation : <Pratical Programming : An Introduction to Computer Science Using Python 3> ...

  4. [Java]手动构建表达式二叉树,求值,求后序表达式

    Inlet类,这颗二叉树是”人力运维“的: package com.hy; public class Inlet { public static void main(String[] args) th ...

  5. Vue踩坑系列

    前言 前端开发对于vue的使用已经越来越多,它的优点就不做介绍了, 本篇是我对vue使用过程中遇到的问题中做的一些总结,帮助大家踩坑.如果喜欢的话可以点波赞,或者关注一下,希望本文可以帮到大家!!! ...

  6. Thread 源码阅读

    Thread 属性说明 /** * 程序中的执行线程 * @since 1.0 */ public class Thread implements Runnable { /* Make sure re ...

  7. 小程序API:wx.showActionSheet 将 itemList动态赋值

    1.发现问题: 小程序调用API:wx.showActionSheet 时发现无论如何都不能将其属性itemList动态赋值. 2.分析问题: 首先我认为可能是格式的问题,itemList必须要求格式 ...

  8. pandas中的reset_index()

    数据清洗时,会将带空值的行删除,此时DataFrame或Series类型的数据不再是连续的索引,可以使用reset_index()重置索引. import pandas as pd import nu ...

  9. Java ——类型转换 向args传递参数

    本节重点思维导图  自动类型转换 整型.实型(常量).字符型数据可以混合运算 运算中,不同类型的数据先转化为同一类型,然后进行运算 转换从低级到高级 低 ----------------------- ...

  10. python学习之数据类型(int,bool,str)

    第三章 数据类型 3.1 Python基本数据类型 类型 含义 描述 int 整数 主要用来进⾏数学运算 str 字符串 可以保存少量数据并进⾏相应的操作 bool 布尔值 判断真假,True,Fal ...