[半转]1px边框 移动端
半转的意思是借鉴参考,搬砖,加了一些自己的想法。
在移动端里,因为存在2倍像素的问题,所以很多时候,移动端上的1px边框并不是意义上的。从下图红色框看到dpr:2.0 ,表示1px等于2倍的物理像素。
网上找了一下,自己总结了一下。
实现方法代码如下:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta content="width=device-width,initial-scale=1,maximum-scale=1.0,user-scalable=no" name="viewport">
- <meta content="yes" name="apple-mobile-web-app-capable">
- <meta content="black" name="apple-mobile-web-app-status-bar-style">
- <meta content="telephone=no" name="format-detection">
- <meta content="email=no" name="format-detection">
- <title>1px的边框问题</title>
- <style type="text/css">
- .line {
- height: 50px;
- width: 200px;
- line-height: 50px;
- background-color: #CCC;
- text-align: center;
- border-bottom:1px solid red;
- margin-bottom: 20px;
- }
- .scale {
- height: 50px;
- width: 200px;
- line-height: 50px;
- background-color: #CCC;
- text-align: center;
- margin-bottom: 20px;
- }
- .scaleV2 {
- height: 50px;
- width: 200px;
- line-height: 50px;
- text-align: center;
- background-color: #CCC;
- margin-bottom: 20px;
- border-radius: 5px;
- }
- .topLine,.bottomLine,.leftLine,.rightLine,.borderLine,.radiusLine{
- position: relative;
- }
- .bottomLine:after {
- position: absolute;
- content: '';
- width: 200%;
- left: 0;
- bottom: 0;
- height: 1px;
- padding-bottom: 1px;
- background-color: red;
- -webkit-transform: scale(.5);
- transform: scale(.5);
- -webkit-transform-origin: left bottom;
- transform-origin: left bottom;
- }
- .topLine:after {
- position: absolute;
- content: '';
- width: 200%;
- left: 0;
- top: 0;
- height: 1px;
- background-color: red;
- -webkit-transform: scale(.5);
- transform: scale(.5);
- -webkit-transform-origin: left bottom;
- transform-origin: left bottom;
- }
- .leftLine:after {
- position: absolute;
- content: '';
- width: 1px;
- left: 0;
- top: 0;
- height: 200%;
- background-color: red;
- -webkit-transform: scale(.5);
- transform: scale(.5);
- -webkit-transform-origin: left bottom;
- transform-origin: left top;
- }
- .rightLine:after {
- position: absolute;
- content: '';
- width: 1px;
- right: 0;
- top: 0;
- height: 200%;
- background-color: red;
- -webkit-transform: scale(.5);
- transform: scale(.5);
- -webkit-transform-origin: center bottom;
- transform-origin: right top;
- }
- .borderLine:after {
- position: absolute;
- content: '';
- width: 200%;
- left: 0;
- top: 0;
- height: 200%;
- border: 1px solid red;
- -webkit-transform: scale(.5);
- transform: scale(.5);
- -webkit-transform-origin: left top;
- transform-origin: left top;
- }
- .radiusLine:after {
- position: absolute;
- content: '';
- width: 200%;
- left: 0;
- top: 0;
- height: 200%;
- border: 1px solid red;
- border-radius: 10px;
- -webkit-transform: scale(.5);
- transform: scale(.5);
- -webkit-transform-origin: left top;
- transform-origin: left top;
- }
- </style>
- </head>
- <body>
- <div class="line">1px</div>
- <div class="scale topLine">0.5px 上边框</div>
- <div class="scale bottomLine">0.5px 下边框</div>
- <div class="scale leftLine">0.5px 左边框</div>
- <div class="scale rightLine">0.5px 右边框</div>
- <div class="scale borderLine">0.5px 边框</div>
- <div class="scaleV2 radiusLine">0.5px 圆角边框</div>
- </body>
- </html>
其实还是发现有一些的问题。
就是在在圆角的情况下会有写漏空。
看了一个大神的博客,他是用这样的一种方法的。没有这样的问题。
- .btn:before {
- content: '';
- position: absolute;
- top: -50%;
- bottom: -50%;
- left: -50%;
- right: -50%;
- -webkit-transform: scale(0.5);
- transform: scale(0.5);
- border-style: solid;
- border-width: 1px;
- border-color: red;
- -webkit-border-radius: 10px;
- border-radius: 10px;
- }
实现.5px的圆角边框
.5px的边框,看起来看神奇,这里感谢蓝叔提供的方法。
原理:先定义1px的圆角边框,然后拉伸内容的宽度和高度为父级的2倍(边框厚度不变),然后再使用transform:scale(0.5)缩放为原来的0.5倍
转:http://peunzhang.cnblogs.com/
[半转]1px边框 移动端的更多相关文章
- 移动端1px边框
问题:移动端1px边框,看起来总是2倍的边框大小,为了解决这个问题试用过很多方法,用图片,用js判断dpr等,都不太满意, 最后找到一个还算好用的方法:伪类 + transform 原理是把原先元素的 ...
- 移动端视网膜(Retina)屏幕下1px边框线 解决方案
原因: 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在devicePixelRatio=2的retina屏下会显示成2px. 但在IOS8中,已经支持0.5px了,那就意味着, 在de ...
- 7种方法解决移动端Retina屏幕1px边框问题
在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...
- 移动端1px边框实现
问题描述:移动端iPhone上的1px边框看起来像2px那么粗.问题分析:不同的手机有不同的像素密度,在window对象中有一个devicePixelRatio属性,它可以反应设备的像素与css中的像 ...
- 7种方法实现移动端Retina屏幕1px边框效果
在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...
- 移动端1px边框问题
用于手机端受dpr的影响,实际开发中,PC端和移动端展示的效果不太一样,往往在PC端显示的是1px,移动端常常是偏粗一些. 解决办法: 主要是用到伪类及缩放.在需要画边框的元素上,设置一个伪类,它的伪 ...
- 移动端1px边框伪类宽高计算
移动端1px边框在手机上看显得比较粗,于是我们用伪类结合css3缩放的方法去设置线条,但是如果设置div的一条边,水平线就设置宽度100%,垂直线就设置高度100%,那么如果是div的四条边呢?宽高1 ...
- CSS3实现小于1px的边框(移动端)
<!doctype html> <html lang="en"> <head> <meta content="width=dev ...
- 目前解决移动端1px边框最好的方法
在移动端开发时,经常会遇到在视网膜屏幕中元素边框变粗的问题.本文将带你探讨边框变粗问题的产生原因及介绍目前市面上最好的解决方法. 1px 边框问题的由来 苹果 iPhone4 首次提出了 Retina ...
随机推荐
- 关于python字符串连接的操作
python字符串连接的N种方式 注:本文转自http://www.cnblogs.com/dream397/p/3925436.html 这是一篇不错的文章 故转 python中有很多字符串连接方式 ...
- 【JS基础】数组
filter() 返回数组中的满足回调函数中指定的条件的元素. array1.filter(callbackfn[, thisArg]) 对数组array1中的每个元素调用回调函数callbackfn ...
- CSS3之过渡及2D变换
transition过渡 transition-duration:; 运动时间 transition-delay:; 延迟时间 transition-timing-function:; 运动形式 ea ...
- zepto/jQuery、AngularJS、React、Nuclear的演化
写在前面 因为zepto.jQuery2.x.x和Nuclear都是为现代浏览器而出现,不兼容IE8,适合现代浏览器的web开发或者移动web/hybrid开发.每个框架类库被大量用户大规模使用都说明 ...
- css基础
一. web标准化 (1).内容与样式,行为分离 (2).html用来定义语义内容,以及内容的结构 (xhtml) (3).xhtml标准 a.xhtml 必须强制指定文档类型 DocType,HTM ...
- xcode8 storyboard 控件显示错位
升级xcode8 后选择device 为6s 出现上面的情况,控件显示异常.使用Update Frame 显示正常.不能选择Update Constraints 如果误选 commend + Z ...
- kindle型号
这篇文章为 Kindle 新手解决三个问题:怎么辨别Kindle 型号?通过 Kindle 外观判断准确吗?Kindle序列号在那里? 贴吧吧友提问的原话"在咸鱼看到一台,那哥们说也不知道K ...
- listview侧滑删除
自定义Listview,向左滑动,右边刚好显示删除按钮: public class SlideListView extends ListView { private int mScreenWidth; ...
- 《明解c语言》已看完,练习代码此奉上
2016年9月20日至2016年11月12日,从学校图书馆借来的<明解c语言>看完了. 大三第一个学期,前8周,有c语言程序设计的课.课本是学校里的老师编写出版的,为了压缩空间,减少页面, ...
- 刷新页面时 select值保持不变
刷新页面时,要使下拉菜单(select).raido保持不变,用ajax是无法实现的.我想只能通过cookies才能实现.刷新前先把select或radio的值保存在cookies中,刷新后再填回去. ...