如何解决在移动端1px渲染成2px的问题?

141 阅读1分钟

" 使用viewport单位解决1px渲染成2px的问题:

/* 在<head>标签内添加以下meta标签 */
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">

/* 使用伪元素和transform属性实现1px线条 */
.border-1px {
  position: relative;
}
.border-1px::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background-color: #000; /* 设置线条颜色 */
  transform-origin: 0 0;
  transform: scaleY(0.5); /* 控制线条宽度 */
}

使用flexible.js解决1px渲染成2px的问题:

/* 在<head>标签内引入flexible.js文件 */
<script src=\"flexible.js\"></script>

/* 设置viewport的缩放比例 */
<script>
  document.addEventListener('DOMContentLoaded', function() {
    var dpr = window.devicePixelRatio;
    var scale = 1 / dpr;
    var metaEl = document.querySelector('meta[name=\"viewport\"]');
    metaEl.setAttribute('content', 'width=device-width, initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
  });
</script>

使用postcss-write-svg解决1px渲染成2px的问题:

/* 安装postcss-write-svg插件 */
npm install postcss-write-svg --save-dev

/* 在postcss配置文件中引入插件 */
const postcssWriteSvg = require('postcss-write-svg');
module.exports = {
  plugins: [
    postcssWriteSvg({
      utf8: false
    })
  ]
};

使用border-image解决1px渲染成2px的问题:

/* 定义一个1px宽度的border-image */
.border-image {
  border: 1px solid transparent;
  border-image: url(border.png) 2 stretch;
}
```"