CSS实现1px以内的移动

之前的文章说过关于行内元素垂直方向对齐的方案。感兴趣的可以看我的往期文章。在上一篇文章里我们提到了 1px 内的移动问题。本文就一像素内的问题给出解决方案。

可能大家看过关于 Retina 屏幕的一像素边框问题,注意这里是边框宽度而不是移动元素。

什么?border 小于 1px ?

对,因为前面有人给出相关方案而且好多种方案,这里不重复描述实现原理,给大家两个链接,感兴趣的自己跳转。

看完大彻大悟,佩服佩服,思路很多,回到本文重点

想一下能实现移动的方法 position(top,right,bottom,left), margin, padding, vertical-align。

上面给的只是一部分可以通过具体单位(px, em, rem 等)进行移动的方法

本着实践的原则,上述方案都不可行,在最新的 chrome 中,当小于 0.5px 时是 0,当大于等于 0.5px 时就变成 1px。

因为案例过于简单,不做 demo ,感兴趣的自己实践,相信大家多数人试验过了。

那么还有什么以具体单位移动的属性呢?

解决方案

也许你早就知道有 transform 的 translate 属性了。没错它就能实现 1px 内的移动!

基本语法:


  1. transform: translate(12px, 50%); 
  2.  
  3. transform: translateX(2em); 
  4.  
  5. transform: translateY(3in);  

给出本文的 demo 代码,


  1. <div class="parent"> 
  2.   <div class="child-first"></div> 
  3.   <div class="child-second"></div> 
  4.   <div class="child-third"></div> 
  5. </div> 
  6.  
  7. <style> 
  8.   .parent { 
  9.     width: 310px; 
  10.     height: 150px; 
  11.     background-color: #666; 
  12.   } 
  13.  
  14.   .parent div { 
  15.     display: inline-block; 
  16.   } 
  17.  
  18.   .child-first { 
  19.     width: 100px; 
  20.     height: 100px; 
  21.  
  22.     margin-top: .5px; 
  23.  
  24.     transform: translateY(.3px); 
  25.  
  26.     background-color: #f66; 
  27.   } 
  28.  
  29.   .child-second { 
  30.     width: 100px; 
  31.     height: 100px; 
  32.  
  33.     transform: translateY(.5px); 
  34.  
  35.     background-color: #ff0; 
  36.   } 
  37.  
  38.   .child-third { 
  39.     width: 100px; 
  40.     height: 100px; 
  41.  
  42.     transform: translateY(1px); 
  43.  
  44.     background-color: #06c; 
  45.   } 
  46. </style>  

截图如下

这里为了更容易观察,我们把布局换成 inline-block ,我们发现元素与元素之间存在空隙回去再看一遍代码发现没什么问题,那这段距离是怎么引起的呢?

是空格? 没错! 在使用 inline-block 的时候一定注意代码缩进或换行带来的不必要的麻烦(无意中添加了空格)。

修改如下


  1. <div class="parent"> 
  2.  
  3. <div class="child-first"></div><div class="child-second"></div><div class="child-third"></div> 
  4.  
  5. </div>  

得到最终结果,如下图

这里特地将小块颜色做区分,浏览器视图放大到最大倍数,如果还是看不清的话,推荐大家亲手试一试,

总结

到这里我的方法讲完了,在最后欢迎大家讨论,方案不止一个, orange 目前只发现这一个方案,你也可以根据 js 判断屏幕然后给出 .5 像素的偏移也是可行的,我个人认为此方法简单一些。

作者:orangexc

来源:51CTO

时间: 2024-09-23 08:46:26

CSS实现1px以内的移动的相关文章

CSS 实现 1px 以内的移动

可能大家看过关于 Retina 屏幕的一像素边框问题,注意这里是边框宽度而不是移动元素. 什么?border 小于 1px ? 对,因为前面有人给出相关方案而且好多种方案,这里不重复描述实现原理,给大家两个链接,感兴趣的自己跳转. Retina 屏的移动设备如何实现真正 1px 的线? 移动 web 点 5 像素的秘密 看完大彻大悟,佩服佩服,思路很多,回到本文重点 想一下能实现移动的方法 position(top,right,bottom,left), margin, padding, ver

CSS定义1px高度的div

div.lihe{ font-size:1px; line-height:1px; height:1px;} 这个应用的比较多的就是火狐浏览器的清除浮动: .clear{clear:both; font-size:1px; line-height:1px; height:1px; background:none; }

css+table 1px边框单元格_经验交流

jquery-Jquery的css样式怎么写

问题描述 Jquery的css样式怎么写 大神帮我看下我这段代码哪里有问题吧?$(""textarea [name ='content']"").css(""border"":""1px solid red""); 解决方案 注意括号中英文状态,单个css用逗号分隔,不是冒号 $(""textarea [name ='content']"").cs

jQuery+CSS实现简单切换菜单示例_jquery

本文实例讲述了jQuery+CSS实现简单切换菜单的方法.分享给大家供大家参考,具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标

Jquery中CSS选择器用法分析_jquery

本文实例讲述了Jquery中CSS选择器用法.分享给大家供大家参考.具体如下: jQuery使用了一套css选择器,共有5种,即标签选择器,ID选择器,类选择器,通用选择器和群组选择器,现分述如下: 1. 标签选择器 用于选择HTML页面中已有的标签元素,又称元素选择器,格式:$("element"),如$("div"),同getElementByTagName 2. ID选择器 用于获取某个具有id属性的元素,格式如下:$("id"),同get

Jquery 学习笔记(二)jQuery性能优化指南

Jquery 学习笔记(二) -jQuery性能优化指南 2009年11月30日 一 作者:   邦畿千里   1,总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法. 例如有一段HTML代码: <div id="content"> <form method="post" action="#"> <h2>交通信号灯<

多彩的Console打印新玩法

Chrome应该是每一个Web开发者必备的工具之一.它有而强大的Devtool,辅助我们的JavaScript调试,审视DOM元素,CSS即时修改等.以及它还有一个的庞大的插件系统,同时我们也可以很容易的扩展属于自己的Chrome插件.如果希望了解更多的Chrome常用调试,请参见笔者早期的微信推送文章<15个必须知道的chrome开发者技巧>. Chrome中的控制台console,是我们检查程序允许是否正常的常用工具之一,同时它也是我们打印调试日志信息,运行调试代码的常用工具.在国内近几年

modernizr框架之表单验证

框架下载地址:http://modernizr.com/ 案例: <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.7.1.js"></script> <script src="http://ajax.cdnjs.com/ajax/libs/modernizr/1.7/modernizr-1.7.min.js&q