回流一定会触发重绘,重绘不一定触发回流。
reflow:改变元素在网页中的布局和位置
导致回流发生的情况:
对应的css属性如下:
repaint:改变不影响元素。在网页中的位置的元素样式时,根据浏览器新属性重新绘制一次。不会带来重新布局。
导致重绘发生的情况:
导致重绘的css属性如下:
css文件放前面,js文件放在html和css的后面
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
//使用这个
img {max-width:100%} //最大宽度显示为自身的100%
//不用这个
img {width: 100%} //宽度为外层容器的宽度 图片会被无情地拉伸
media screen and (min-width:1000px) {
body{
background:red;
}
}
动态计算 js代码
(function (){
const desWid = 640
const winWid = document.documentElement.clientWidth
const oMain = document.getElementById('main')
const ratio = winWid / desWid
if(winWid > desWid) {
oMain.style.width = desWid + 'px'
oMain.style.margin = '0 auto'
return
}
oMain.style.fontSize = ratio*100 + 'px'
} ())
任意浏览器的默认字体高都是16px。
1.transform:scale(0.5)
//下边框有线
<style>
div{
width: 200px;
height: 200px;
position: relative;
background-color: pink;
}
div::before{
content: '';
position: absolute;
top: -50%;
bottom: -50%;
left: -50%;
right: -50%;
border-bottom: 1px solid black;
transform: scale(0.5);
}
</style>
<div>11</div>
//四条线都有线
<style>
div{
width: 200px;
height: 200px;
position: relative;
background-color: pink;
}
div::before{
content: '';
width: 200%;
height: 200%;
position: absolute;
top: 0;
left: 0;
border: 1px solid black;
transform-origin: 0 0;
/* 设置元素基点 x和y坐标 */
transform: scale(0.5);
}
</style>
2.渐变
<style>
div{
width: 200px;
height: 200px;
position: relative;
background-color: pink;
}
div::after{
content: ' ';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background-image:linear-gradient(0deg, transparent 50%, black 50%)
}
</style>
<style>
div{
height: 0.25em;
width: 20rem;
background-size: 0.5em 0.5em;
background-image: linear-gradient(45deg, transparent 45%, red 55%, transparent 60%), linear-gradient(135deg, transparent 45%, red 55%, transparent 60%);
background-repeat: repeat-x;
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
document.addEventListener('gesturestart',function(e) {
e.preventDefault()
})
body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
在需要禁止的dom加上这句
ontouchstart="return false;"
备注:手机uc浏览器,meta标签的name=browsermode content= application 这样就无法调起长菜单
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8