1像素边框问题
1像素边框问题其实就是Dpr的比例问题,例如 Retina屏设置1px边框,实际显示2px,因为Dpr是2,所以会显示为2px
目前这里用的是伪元素 + transform 实现:
伪元素:总结伪类与伪元素
1 | ::after 在某元素之后插入某些内容 |
原理是利用 :before 或者 :after 重做 border,并且根据媒体查询设置不同的缩放比例(transform 的 scale)
具体操作会在stylus里面实现
stylus相关
- 使用stylus的写法,通过缩进表示层次与嵌套关系
- 使用mixins方法来更方便的组件化css,相关写法可以参考:官网的mixins
- 创建/sell/src/common/stylus这个目录,用来存放stylus相关的文件
1 | src/common/stylus |
以下分别是四个文件的代码(名字只是为了区分不同的作用):
base.styl
1 | <!--这里是对于使用reset.css之后的一些自定义的默认的css初始化--> |
- 这里的修复1像素边框问题会拆分为2个部分,一个部分是这里的base.styl里面处理缩放,另外一部分是在mixin.styl里面处理重做border
- 这里是一个base模块文件,只保留了基本的共用的css,需要结合其他的css文件(stylus)来合并理解
- dpr一般是1或者2,1.5只是为了更精细的去适配1和2之间的手机型号
mixin.styl
1 | //这里是负责1像素边框问题 |
- 这里的border-1px($color) 就是真正处理1像素边框问题的关键,通过伪元素after重做border,并且支持传入颜色变了$color来自定义颜色
- 这里的bg-image($url) 是负责处理图片在不同dpr下显示的问题,原来跟1像素边框问题差不多,不过这里不需要重做,只是根据不同的media query来调用不同的图片显示,而这些图片是需要放在相对于的文件夹的,在这个项目的话,是放在.vue文件的文件夹下.
icon.styl
这个其实是用icomoon生成的icon样式文件,通过将小图片转为字体,然后通过css样式调用,这样做的目的可以减少小图片的http请求,也方便管理和使用这些小图片,例如可以直接使用某个图片的class就可以调用该图片
1 | <!--这个其实就是之前图标字体生成的css文件改过来的--> |