rem是相对于根元素html字体大小来计算的,即( 1rem = html字体大小 )css
rem:(root em,根em)根元素的fort-size的大小计算
em:相对长度单位,相对于当前对象内文本的字体尺寸,如当前对行内文本的字体尺寸未被设置,则相对于浏览器的默认字体尺寸。 em 的值并非固定的, em的值会继承父级元素的字体大小。html
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <script> var pageWidth = window.innerWidth document.write('<style>html{font-size:'+pageWidth+'px;}</style>') </script>
font-size: 16px; border: 1px solid red; width: 0.5rem;
npm config set registry https://registry.npm.taobao.org/前端
touch ~/.bashrcnode
echo 'export SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"'>> ~/.bashrccss3
source ~/.bashrcnpm
npm i -g node-sass浏览器
mkdir ~/Desktop/scss-demosass
cd ~/Desktop/scss-demobash
mkdir scss css工具
touch scss/style.scss
start scss/style.scss
node-sass -wr scss -o css
编辑 scss 文件就会自动获得 css 文件
在 scss 文件里添加
@function px( $px ){ @return $px/$designWidth*10 + rem; } $designWidth : 640; // 640 是设计稿的宽度,你要根据设计稿的宽度填写。 .child{ width: px(320); height: px(160); margin: px(40) px(40); border: 1px solid red; float: left; font-size: 1.2em; }
便可实现 px 自动变 rem
使用的是Flexbox ,有兼容性问题
总体思路:考虑把一个元素变成一个伸缩容器 -->伸缩容器中子元素的排列方式 -->子元素所占空间
1 主轴方向 flex-direction:row /row-reverse(右到左)/column/column-reverse(下到上)
2 伸缩项目在主轴的对齐方式 justify-content:flex-start /flex-end/center/space-between/space-around
3 伸缩项目是否换行 flex-wrap:nowrap/wrap
4 换行后对齐方式 align-content:stretch:拉伸/flex-start...sapce-around
5 不换行对齐方式 align-items 默认拉伸 值同上
1 伸缩项目在伸缩容器中所占的空间 flex 值 数字 比例
2 本身的对齐方式 align -self:start /end/center
3 排列顺序 order 数字 值越小越靠前