--*;
*为变量名称。var(--*);
*为变量名称
CSS 变量字符限制为: [0-9]、[a-zA-Z]、_下划线、-中划线、中文和韩文等。
变量的声明和使用,都须在css声明块 {} 里面:root { --main_color: #fafafa; --font_size_12: 12px; --font_size_14: 14px; --size: 20px; } .div1{ background-color: var(--main_color); font-size: var(--font_size_12); }
$color: pink;
@color: pink;
故在使用 margin 的时一定要注意 collapsing margins 问题
position:fixed
这个属性时。若是其父元素中有使用transform
属性,fixed 的效果会降级为 absolute如果这个直接父级内的元素存在滚动的情况,那就加上 overflow-y: auto。
需要使用 px 配合 dpr 来实现:
/* 注 @size 建议取双数*/ .circle(@size, @backgroundColor) { width: @size; height: @size; background-color: @backgroundColor; [data-dpr="1"] & { width: @size * 0.5; height: @size * 0.5; } [data-dpr="3"] & { width: @size * 1.5; height: @size * 1.5; } }
text-indent: 2em
首行缩进两个字符视口单位 vw | vh |
1vw => 视口宽度的 1%; 1vh => 视口高度的 1%
$vm_fontsize: 75;
@function rem($px) {
@return ($px / $vm_fontsize ) * 1rem;
}
$vm_design: 750;
html {
font-size: ($vm_fontsize / ($vm_design / 2)) * 100vw;
@media screen and (max-width: 320px) {
font-size: 64px;
}
@media screen and (min-width: 540px) {
font-size: 108px;
}
}
//注 body 也增加最大最小宽度限制,避免默认100%宽度的 block 元素跟随 body 而过大过小
body {
max-width: 540px;
min-width: 320px;
}
.border_bottom {
position: relative;
border: none !important;
overflow: hidden;
}
.border_bottom:after {
content: "";
display: block;
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 1px;
background-color: #d4d6d7;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.border_bottom {
box-shadow: inset 0px -1px 1px -1px #d4d6d7;
}
.min-device-pixel-ratio(@scale2, @scale3) {
@media screen and (min-device-pixel-ratio: 2), (-webkit-min-device-pixel-ratio: 2) {
transform: @scale2;
}
@media screen and (min-device-pixel-ratio: 3), (-webkit-min-device-pixel-ratio: 3) {
transform: @scale3;
}
}
.border-1px(@color: #DDD, @radius: 2PX, @style: solid) {
&::before {
content: "";
pointer-events: none;
display: block;
position: absolute;
left: 0;
top: 0;
transform-origin: 0 0;
border: 1PX @style @color;
border-radius: @radius;
box-sizing: border-box;
width: 100%;
height: 100%;
@media screen and (min-device-pixel-ratio: 2), (-webkit-min-device-pixel-ratio: 2) {
width: 200%;
height: 200%;
border-radius: @radius * 2;
transform: scale(.5);
}
@media screen and (min-device-pixel-ratio: 3), (-webkit-min-device-pixel-ratio: 3) {
width: 300%;
height: 300%;
border-radius: @radius * 3;
transform: scale(.33);
}
}
}
.border-top-1px(@color: #DDD, @style: solid) {
&::before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 100%;
border-top: 1Px @style @color;
transform-origin: 0 0;
.min-device-pixel-ratio(scaleY(.5), scaleY(.33));
}
}
box-sizing:border-box;
html {
/* 注 不会覆盖其他元素的 box-sizing 值,又无需为每一个元素重复设置 box-sizing: border-box; */
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
.line-camp( @clamp:2 ) {
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: @clamp;
-webkit-box-orient: vertical;
}
-webkit-box-orient: vertical
在使用 webpack 打包的时候这段代码会被删除掉,原因是 optimize-css-assets-webpack-plugin 这个插件的问题。解决方案如下代码:
.line-camp( @clamp:2 ) {
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: @clamp;
/*! autoprefixer: off */
-webkit-box-orient: vertical;
/* autoprefixer: on */
}
<div>姓名</div>
<div>手机号码</div>
<div>账号</div>
<div>密码</div>
div {
margin: 10px 0;
width: 100px;
height: 1em;
border: 1px solid red;
line-height: 1em;
/*注 chrome支持此属性值 */
text-align: justify;
text-align-last:justify
}
div:after{
content: '';
display: inline-block;
width: 100%;
}
@mixin mixin-name {
color: red;
font-size: 2em;
font-weight: bold;
border: 1px solid white;
}
.container {
@include mixin-name;
background-color: green;
}
.mixin-name {
color: red;
font-size: 2em;
font-weight: bold;
border: 1px solid white;
}
.container {
.mixin-name;
background-color: green;
}
.container {
color: red;
font-size: 2em;
font-weight: bold;
border: 1px solid white;
background-color: green;
}
<head
部分 CSS样式的加载、解析之后才会渲染页面。<head>
部分,从而让浏览器接收到 HTML文件后就尽快渲染出页面。对于剩余部分的 CSS样式则可以使用异步的方式再进行加载。
<html>
<head>
<style> /* inlined critical CSS */ </style>
<script> loadCSS('non-critical.css'); </script>
</head>
<body> ...body goes here </body>
</html>