sass移动端常用mixin+function

本文介绍了一系列实用的 CSS Mixins 技术,包括基础修饰、边框效果、文本样式控制、阴影效果以及动画生成等方面的内容,帮助开发者提高前端开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//基础修饰
@mixin borRadius(radius:50borderradius:radius;
}

//1px边框
//通过background实现的1px,设置到dom本身,不会绘制padding和margin区域
@mixin onePxByBg(borColor:#efefef,direction:bottom,borPx:1px)backgroundimage:webkitlineargradient(top,$borColor,$borColor50backgroundimage:lineargradient(180deg,$borColor,$borColor50backgroundsize:120backgroundrepeat:norepeat;backgroundorigin:contentbox;@if$direction==bottombackgroundposition:bottomleft;@elseif$direction==topbackgroundposition:topleft;//1px线@mixinoneRectangle(borColor:#efefef, direction:bottom,borPx:1px) {
&:after{
position: absolute;
transform-origin: 0 0;
content: ”;
background-color: borColor;@ifdirection == bottom {
bottom: -1px;
left: 0;
width: 100%;
height: 2px;
transform: scale(1,.5);
}
@else if direction==toptop:1px;left:0;width:100height:2px;transform:scale(1,.5);@elseifdirection == right {
top: 0;
left: -1px;
width: 2px;
height: 100%;
transform: scale(.5,1);
}
@else if $direction == left {
top: 0;
right: -1px;
width: 2px;
height: 100%;
transform: scale(.5,1);
}
}
}

@mixin notStatic(position:absolute,top: auto, right:auto,bottom: auto, left:auto,index:3) {
top: top;right:right;
bottom: bottom;left:left;
z-index: index;@ifposition == absolute {
position: absolute;
}
@else if position==relativeposition:relative;@elseifposition == fixed {
position: fixed;
}
}

@mixin absoYCenter{
@include notStatic(absolute, 50%,auto,auto,auto,3);
transform: translateY(-50%);
}
@mixin absoXCenter{
@include notStatic(absolute, auto,auto,auto,50%,3);
transform: translateX(-50%);
}
@mixin absoCenter{
@include notStatic(absolute, 0,0,0,0,3);
}
@mixin absoBot{
@include notStatic(absolute, auto,0,0,0,3);
}

//关于文本的基础样式,诸如颜色,字体,对齐方式等
@mixin txtCenter{
text-align: center;
}
@mixin txtLeft{
text-align: left;
}
@mixin txtRight{
text-align: right;
}
@mixin pullLeft{
float: left;
}
@mixin pullRight{
float: right;
}
@mixin clear{
&::after{
display: block;
content: ‘.’;
visibility:hidden;
height:0;
clear:both;
}
}
@mixin overClear{
overflow: hidden;
}
//行高
@mixin lineHei(lineHei:1.5){  
  line-height:
lineHei;
}
//单行及多行文本溢出控制
@mixin singleLimitWidth() {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

@mixin doubleLimitWidth(num:2){  
  display: -webkit-box !important;  
  overflow: hidden;  
  text-overflow: ellipsis;  
  word-break: break-all;  
  -webkit-box-orient: vertical;  
  -webkit-line-clamp:
num;
}

//文字大小定义
@mixin fontDpr(fontSize:12px){  
  font-size:
fontSize;
[data-dpr = ‘2’] & {
font-size: fontSize*2;  
  }  
  [data-dpr = ‘3’] & {  
    font-size:
fontSize*2;
}
}

@mixin disabled(bgColor: #e6e6e6,textColor:#ababab){
background-color: bgColor!important;color:textColor !important;
cursor: not-allowed !important;
}

//内阴影和外阴影
@function black(opacity) {  
  @return rgba(0, 0, 0,
opacity)
}

@function white(opacity)@returnrgba(255,255,255,$opacity)@mixinboxemboss(opacity, opacity2)boxshadow:white($opacity)01px0,insetblack($opacity2)01px0;//@mixinhidetextoverflow:hidden;textindent:9000px;display:block;//@mixinboxshadow(x: 3px, y:3px,extend: 4px, shadowcolor: #cccccc) {  
  box-shadow: $x $y $extend $shadowcolor;  
}  
//动画keyframes生成  
@mixin keyframes(
animationName) {
@keyframes #{$animationName} {
@content;
}
}

可以使用`node-sass``sass-loader`来解析`.scss`文件,同时使用`postcss-loader``autoprefixer`来自动添加浏览器厂商前缀,最后使用`css-loader``style-loader`将CSS样式注入到HTML页面中。 在Vue项目中,可以在`vue.config.js`文件中进行配置: ```javascript module.exports = { css: { loaderOptions: { sass: { prependData: ` @import "@/assets/scss/_variables.scss"; @import "@/assets/scss/_mixins.scss"; ` }, postcss: { plugins: [ require('autoprefixer')({ overrideBrowserslist: ['last 2 versions', '>1%'] }) ] } } } } ``` 然后,可以在`.vue`文件中使用`<style lang="scss">`标签来编写Sass样式,例如: ```scss // _variables.scss $base-font-size: 16px; $base-width: 750px; // _mixins.scss @function px2rem($px) { @return ($px / $base-font-size) * 1rem; } @mixin center() { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } // index.vue <style lang="scss"> .container { width: $base-width; margin: 0 auto; } .title { font-size: px2rem(32px); margin-top: px2rem(20px); } .box { width: 50vw; height: 50vh; background-color: #f00; @include center(); } </style> <template> <div class="container"> <h1 class="title">Hello World!</h1> <div class="box"></div> </div> </template> ``` 以上示例中,`$base-font-size``$base-width`变量定义在`_variables.scss`中,`px2rem()``center()`混合宏定义在`_mixins.scss`中,然后在`index.vue`中引入并使用它们来实现移动端自适应布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值