这算是CSS的bug吗?

     移动端web开发越来越火,同时移动端适配也是一个很让人头疼的事情,你不能让一个同样大小的元素在不同的设备上都显示一样大小。(iphone6和iphone4下大小肯定是应该不一样的,否则用户体验很差)

     曾几何时为了兼容IE低版本浏览器而头痛,以为到Mobile时代可以跟这些麻烦说拜拜。可没想到到了移动时代,为了处理各终端的适配而乱了手脚。对于混迹各社区的偶,时常发现大家拿手机淘宝的H5页面做讨论—— 手淘的H5页面是如何实现多终端的适配 ?

那么趁此 Amfe阿里无线前端团队双11技术连载 之际,用一个实战案例来告诉大家,手淘的H5页面是如何实现多终端适配的,希望这篇文章对大家在Mobile的世界中能过得更轻松。

    研究了一下午flexible.js ,没想到被这个被这个border给搞的晕头转向的!

   先看看最常见的移动端1px问题:

   

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<title></title>
		<style type="text/css">
			* {
				padding: 0px;
				margin: 0px;
			}
			
			.js {
				 40px;
				height: 40px;
				margin: 0 auto;
			}
			
			.main0 {
				 200px;
				height: 200px;
				margin: 0 auto;
				border: 1px solid red;
				transform: scale(0.2);   /*200*0.2=40*/
				margin-top: -80px; /*(200-40)/2=80*/
				margin-left: -80px;
			}
			
			.my {
				 100px;
				height: 100px;
				border: 1px solid red;
			}
		</style>
	</head>

	<body>
		<div class="js">
			<div class="main0"></div>
		</div>
		<div class="my"></div>
	</body>

</html>

  看到效果图,吓了我一跳:

   这个100px像素的正方形怎么跑到哪里去了?

   

   修改,给.js加上:border: 1px solid black; ,居然显示正常了!

  

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<title></title>
		<style type="text/css">
			* {
				padding: 0px;
				margin: 0px;
			}
			
			.js {
				 40px;
				height: 40px;
				margin: 0 auto;
				border: 1px solid black;  /*就是这一句,不知道为什么??*/
			}
			
			.main0 {
				 200px;
				height: 200px;
				margin: 0 auto;
				border: 1px solid red;
				transform: scale(0.2);   /*200*0.2=40*/
				margin-top: -80px; /*(200-40)/2=80*/
				margin-left: -80px;
			}
			
			.my {
				 100px;
				height: 100px;
				border: 1px solid red;
			}
		</style>
	</head>

	<body>
		<div class="js">
			<div class="main0"></div>
		</div>
		<div class="my"></div>
	</body>

</html>

 

  这又是什么情况??  一句border: 1px solid black;  这么拽?

  

看来还是要 用::before,

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

		<title></title>
		<style type="text/css">
			* {
				padding: 0px;
				margin: 0px;
			}
			
			.js {
				 60px;
				height: 60px;
				margin: 0 auto;
				position: relative;
			}
			
			.js::before {
				content: '';
				 200px;
				height: 200px;
				margin: 0 auto;
				border: 1px solid red;
				transform: scale(0.3);
				position: absolute;
				top: -70px;
				left: -70px;
			}
			
			.my {
				 100px;
				height: 100px;
				border: 1px solid red;
				margin: 0 auto;
			}
		</style>
	</head>

	<body>
		<div class="js">
			<div class="main0"></div>
		</div>
		<div class="my"></div>
	</body>

</html>

 

   谁能解释一下border到底是个什么鬼?? 跪谢!!!!!

   

原文地址:https://www.cnblogs.com/libin-1/p/5987838.html