You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
6.0 KiB
297 lines
6.0 KiB
// 清除浮动
|
|
%clearfix {
|
|
|
|
&:after,
|
|
&:before {
|
|
content: " ";
|
|
display: table;
|
|
}
|
|
|
|
&:after {
|
|
clear: both;
|
|
}
|
|
}
|
|
|
|
// 文字溢出省略,仅webkit支持多
|
|
@mixin ellipsis($lines) {
|
|
@if ($lines==1) {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@else {
|
|
display: -webkit-box;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: $lines;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
word-break: break-all;
|
|
}
|
|
}
|
|
|
|
%ellipsis {
|
|
@include ellipsis(1);
|
|
}
|
|
|
|
// 去掉滚动条
|
|
%no-scrollbar {
|
|
&::-webkit-scrollbar {
|
|
display: none !important;
|
|
width: 0 !important;
|
|
height: 0 !important;
|
|
-webkit-appearance: none;
|
|
opacity: 0 !important;
|
|
}
|
|
}
|
|
|
|
// 使用 @extend %no-scrollbar;
|
|
|
|
// 一像素边框
|
|
%_onepxElement {
|
|
content: '';
|
|
position: absolute;
|
|
}
|
|
|
|
%_onepxTopBottom {
|
|
@extend %_onepxElement;
|
|
left: 0;
|
|
right: 0;
|
|
}
|
|
|
|
%_onepxLeftRight {
|
|
@extend %_onepxElement;
|
|
top: 0;
|
|
bottom: 0;
|
|
}
|
|
|
|
@mixin setDprBorder($direction: tb) {
|
|
@for $i from 1 through 4 {
|
|
@media screen and (-webkit-min-device-pixel-ratio: $i) {
|
|
@if($direction==tb) {
|
|
transform: scaleY(1 / $i);
|
|
}
|
|
|
|
@else if($direction==lr) {
|
|
transform: scaleX(1 / $i);
|
|
}
|
|
|
|
@else if($direction==full) {
|
|
transform: scale(1 / $i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* 一像素边框
|
|
* $direction: 边框方向,默认底边框
|
|
* $style: 线条样式,默认solid
|
|
* $color: 边框颜色
|
|
*/
|
|
@mixin one-px-border($direction: bottom, $style: solid, $color: #e5e5e5) {
|
|
position: relative;
|
|
$border: 1px $style $color;
|
|
|
|
@if ($direction==bottom) {
|
|
&:after {
|
|
@extend %_onepxTopBottom;
|
|
@include setDprBorder(tb);
|
|
border-top: $border;
|
|
bottom: 0;
|
|
}
|
|
}
|
|
|
|
@else if ($direction==top) {
|
|
&:before {
|
|
@extend %_onepxTopBottom;
|
|
@include setDprBorder(tb);
|
|
border-top: $border;
|
|
top: 0;
|
|
}
|
|
}
|
|
|
|
@else if ($direction==left) {
|
|
&:before {
|
|
@extend %_onepxLeftRight;
|
|
@include setDprBorder(lr);
|
|
border-left: $border;
|
|
left: 0;
|
|
}
|
|
}
|
|
|
|
@else if ($direction==right) {
|
|
&:after {
|
|
@extend %_onepxLeftRight;
|
|
@include setDprBorder(lr);
|
|
border-left: $border;
|
|
right: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 默认下边框
|
|
%one-px-border {
|
|
@include one-px-border();
|
|
}
|
|
|
|
// 四边一像素边框
|
|
@mixin full-px-border($color: #e5e5e5, $radius: 0, $zIndex: -1) {
|
|
position: relative;
|
|
z-index: 1;
|
|
|
|
&:before {
|
|
content: '';
|
|
position: absolute;
|
|
z-index: $zIndex;
|
|
border: 1px solid $color;
|
|
width: 200%;
|
|
height: 200%;
|
|
border-radius: inherit;
|
|
transform: scale(.5);
|
|
transform-origin: top left;
|
|
border-radius: $radius * 2;
|
|
left: 0;
|
|
top: 0
|
|
}
|
|
}
|
|
|
|
%full-px-border {
|
|
@include full-px-border();
|
|
}
|
|
|
|
|
|
|
|
// 去除单位并返回数值
|
|
@function strip-units($number) {
|
|
@return $number / ($number * 0 + 1);
|
|
}
|
|
|
|
// px转rem
|
|
@mixin px2rem($attr, $num, $base: 37.5) {
|
|
$list: (); //存储所有转换后的值
|
|
|
|
// 遍历所有值并转换为rem单位
|
|
@for $i from 1 through length($num) {
|
|
// 计算单个rem值
|
|
$value: strip-units(nth($num, $i)) / $base * 1rem;
|
|
// 添加到列表中
|
|
$list: append($list, $value);
|
|
}
|
|
|
|
// 设置属性值
|
|
#{$attr}:$list;
|
|
}
|
|
|
|
@function px2rem($num, $base: 37.5) {
|
|
@return strip-units($num) / $base * 1rem;
|
|
}
|
|
|
|
// 居中一个元素
|
|
@mixin center($position) {
|
|
position: absolute;
|
|
|
|
@if $position=='vertical' {
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
@else if $position=='horizontal' {
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
@else if $position=='both' {
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
}
|
|
|
|
// 该函数可以用来做各种方向的背景渐变,
|
|
@mixin background-gradient($start-color, $end-color, $orientation) {
|
|
background: $start-color;
|
|
|
|
@if $orientation=='vertical' {
|
|
background: linear-gradient(to bottom, $start-color, $end-color);
|
|
}
|
|
|
|
@else if $orientation=='horizontal' {
|
|
background: linear-gradient(to right, $start-color, $end-color);
|
|
}
|
|
|
|
@else {
|
|
background: radial-gradient(ellipse at center, $start-color, $end-color);
|
|
}
|
|
}
|
|
|
|
//
|
|
@mixin triangle($direction: down, $size: 5px, $color: #F96001) {
|
|
width: 0px;
|
|
height: 0px;
|
|
|
|
@if ($direction==left) {
|
|
border-top: $size solid transparent;
|
|
border-bottom: $size solid transparent;
|
|
border-right: $size solid $color;
|
|
}
|
|
|
|
@else if ($direction==right) {
|
|
border-top: $size solid transparent;
|
|
border-bottom: $size solid transparent;
|
|
border-left: $size solid $color;
|
|
}
|
|
|
|
@else if ($direction==down) {
|
|
border-left: $size solid transparent;
|
|
border-right: $size solid transparent;
|
|
border-top: $size solid $color;
|
|
}
|
|
|
|
@else {
|
|
border-left: $size solid transparent;
|
|
border-right: $size solid transparent;
|
|
border-bottom: $size solid $color;
|
|
}
|
|
}
|
|
|
|
// 媒体查询
|
|
|
|
$width-small: 400px;
|
|
$width-medium: 760px;
|
|
$width-large: 1200px;
|
|
|
|
@mixin responsive($width) {
|
|
@if $width==wide-screens {
|
|
@media only screen and (max-width: $width-large) {
|
|
@content;
|
|
}
|
|
}
|
|
|
|
@else if $width==medium-screens {
|
|
@media only screen and (max-width: $width-medium) {
|
|
@content;
|
|
}
|
|
}
|
|
|
|
@else if $width==small-screens {
|
|
@media only screen and (max-width: $width-small) {
|
|
@content;
|
|
}
|
|
}
|
|
}
|
|
|
|
// @include responsive(wide-screens) {
|
|
// width: 80%;
|
|
// }
|
|
|
|
// @include responsive(medium-screens) {
|
|
// width: 50%;
|
|
// font-size: 14px;
|
|
// }
|
|
|
|
// @include responsive(small-screens) {
|
|
// float: none;
|
|
// width: 100%;
|
|
// font-size: 12px;
|
|
// }
|
|
|