CSS学习笔记之常用Mixin封装实例代码_CSS教程_CSS_网页制作

css预处理技术现在已经非常成熟,比较流行的有less,sass,stylus,在开发过程中提升我们的工作效率,缩短开发时间,方便管理和维护代码,这篇文章主要给大家分享介绍了关于css学习笔记之常用mixin封装的相关资料,需要学习css的朋友们下面随着小编来一起学习学习吧。

前言

为了有效的维护和开发项目,代码的重复利用就显得尤为重要。在Sass中,除了@import和@extend可以使你的代码更加具有重复利用性,@mixin指令也同样能提高你代码的重复使用率并简化你的代码。个人在做项目的过程中总结归纳的一些常用Mixin,现在分享出来供大家学习。

基于Less编写。但是CSS预处理器都是相通的,你可以很轻易的修改成Sass、Stylus

代码免不了错误和Bug,如果你能帮我修改或者补充 万分感谢!!

立即学习“前端免费学习笔记(深入)”;

参考了一些开源库,如:est、csslab等

Usage

/*** 作品:mixin.less* 更新:2017年12月14日* 简介:1. 一个基于 Less 的样式工具库,封装了常用 mixin,帮助您更轻松地书写 Less 代码。*       2. 只在调用时才输出代码,减少代码冗余,避免样式污染*       3. 不自带兼容前缀,减少代码量,而建议采用工具生成,如 postcss、Autoprefixer、less-plugin-autoprefix 等*       4. 附带 IE 各类 Hack*//*-------------------------------------├   布局                              ┆└------------------------------------*/// 盒子宽高.size(@w, @h) { width: @w; height: @h; }// 最小尺寸, 兼容IE6.min-width(@min-w) { min-width: @min-w; _width: @min-w; }.min-height(@min-h) { min-height: @min-h; _height: @min-h; }// 内联块级元素, 兼容IE6.dib() { display: inline-block; *display: inline; *zoom: 1; }// 固定定位, 兼容IE6.fixed() { position: fixed; _position: absolute; *zoom: 1; }// 统一盒模型.border-box() {  *, *:after, *:before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }}// 文字图片居中.center(text-x) { text-align: center; }.center(text-y) { display: table-cell; vertical-align: middle; }// 块级元素水平居中.center(auto-x) { display: block; margin-left: auto; margin-right: auto; }// 居中, 不确定尺寸, 不兼容 IE6.center(unknown) { position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; }.center(unknown-x) { position: absolute; left: 0; right: 0; margin-left: auto; margin-right: auto; }.center(unknown-y) { position: absolute; top: 0; bottom: 0; margin-top: auto; margin-bottom: auto; }// 居中, 确定尺寸, 兼容 IE6.center(known, @w, @h) {  .size(@w, @h);  position: absolute; top: 50%; left: 50%; margin-top: -(@w / 2); margin-left: -(@h / 2);}.center(known-x, @w) {  width: @w;  position: absolute; left: 50%; margin-left: -(@h / 2);}.center(known-y, @h) {  height: @h;  position: absolute; top: 50%; margin-top: -(@w / 2);}// 居中, CSS3 平移方式, 兼容性不行.center(translate) { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }// 居中, Flex 方式, 兼容性不行.center(flex) { display: flex; align-items: center; justify-content: center; }// 多个子项布局.list(float, @w: 25%) { float: left; width: @w; }.list(inline, @w: 25%) { .dib(); width: @w; }.list(flex) { flex: 1; }// 遮罩层, 全屏遮罩、区域遮罩.over-screen(fixed) { .fixed(); top: 0; left: 0; right: 0; bottom: 0; }.over-screen(absolute) { position: absolute; top: 0; left: 0; right: 0; bottom: 0; }// 容器宽高比固定// 100* 1/1 = 100%// 100* 3/4 = 75%.fixed-ratio(@padding-top: 100%) {  position: relative; width: 100%; height: 0; padding-top: @padding-top;  img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }}// 扩展点击区域.extend-click() {  position: relative;  &:before { content: ''; position: absolute; top: -10px; left: -10px; right: -10px; bottom: -10px; }}// 定宽居中页面布局.layout-page(@width: 1200px) { width: @width; margin-left: auto; margin-right: auto; }// 侧边栏// 主要区域:overflow: hidden; margin-left: xx; margin-right: xx;.sidebar(left, @width) { position: absolute; top: 0; left: 0; width: @width; }.sidebar(right, @width) { position: absolute; top: 0; right: 0; width: @width; }/*-------------------------------------├   字体                              ┆└------------------------------------*/// 字体大小.fz(@fz) { font-size: @fz; }// 字体大小与行高.fz(@fz, @lh) { font-size: @fz; line-height: @lh; }// 字体大小、行高、高度.fz(@fz, @h, @lh: @h) { font-size: @fz; height: @h; line-height: @lh; }// 行高与高度.lh(@h, @lh: @h) { height: @h; line-height: @lh; }// 字体颜色, 包括链接与非链接.color(@color) { color: @color;}// 字体颜色 + 自身 Hover.color(@color, @hovercolor) {  color: @color;  &:hover { color: @hovercolor; }}// 字体颜色 + 链接 Hover.color(@color, @acolor, @hovercolor) {  color: @color;  a {    color: @acolor;    &:hover { color: @hovercolor; }  }}// 正常字体样式.normal-font() { font-weight: normal; font-style: normal; }// 辅助性文字(灰色).assist-font(@color: #b0b0b0, @fz: 14px) { color: @color; font-size: @fz; }// 禁止换行, 文本溢出省略号显示 (一行).ellipsis() {  white-space: normal; word-wrap: break-word; word-break: break-all;  -o-text-overflow: ellipsis; -ms-text-overflow: ellipsis; text-overflow:ellipsis; overflow:hidden;}// 文本溢出省略号显示 (多行)// 只支持 webkit 浏览器, 解决方案:高度 = 行高*行数// height: 90px; line-height: 30px; -webkit-line-clamp: 3;.ellipsis-mult(@n: 3) {  display: -webkit-box; -webkit-box-orient: vertical;-webkit-line-clamp: @n; word-break: break-all;  -o-text-overflow: ellipsis; -ms-text-overflow: ellipsis; text-overflow:ellipsis; overflow: hidden;}// 书写模式:牌匾从右至左水平单行排版效果、文笺从右至左、从上至下排版效果.retext(x) { direction: rtl; unicode-bidi: bidi-override; }.retext(y) { writing-mode: tb-rl; writing-mode: vertical-rl; }// 文字透明.transparent-text() { font: 0/0 serif; text-shadow: none; color: transparent; }// 文字隐藏(常用于SEO优化)// 

xx

.hidden-text() { text-indent : -9999px; overflow: hidden; text-align: left; }// 文字外发光效果.glow-text(@r: 10px, @color: gold) { text-shadow: 0 0 @r @color; }/*-------------------------------------├   图像                              ┆└------------------------------------*/// 用 max-width 来防止图片撑破容器.max-img() { display: block; max-width: 100%; height: auto; }// 2x 3x 背景图片.bg-image(@url) {  background-image: url("@url + '@2x.png'");  @media (-webkit-min-device-pixel-ratio: 3), (min-device-pixel-ratio: 3) {    background-image: url("@url + '@3x.png'");  }}// 全屏大图背景.fullscreen-bg(@url) {  width: 100vw;  height: 100vh;  background: url(@url) no-repeat 50% 50%;  background-size: cover;}// 滤镜: 将彩色照片显示为黑白照片.grayscale() {  filter: grayscale(100%);  -webkit-filter: grayscale(100%);  -moz-filter: grayscale(100%);  -ms-filter: grayscale(100%);  -o-filter: grayscale(100%);}/*-------------------------------------├   动效                              ┆└------------------------------------*/// 链接默认无下划线,hover后有下划线的样式.hover-link() {  text-decoration: none;  &:hover { text-decoration: underline; }}// 将链接变成默认的文字样式.unstyled-link() {  color: inherit;  cursor: inherit;  text-decoration: inherit;  &:active, &:focus { outline: none; }}// 盒子阴影// box-shadow: 水平阴影的位置, 垂直阴影的位置, 模糊距离, 阴影的大小, 阴影的颜色, 阴影开始方向(默认是从里往外,设置inset就是从外往里);// box-shadow: h-shadow v-shadow blur spread color inset;.box-shadow() {  box-shadow: 0px 14px 26px 0px rgba(0, 0, 0, 0.1);}// 盒子 Hover.box-hover() {  // box-shadow: 0px 1px 2px 0px rgba(84, 107, 107, .4);  transition: all .2s linear;  &:hover {    box-shadow: 0 15px 30px rgba(0, 0, 0, .1);    transform: translate3d(0, -2px, 0);  }}.box-hover2() {  transition: transform .5s ease;  &:hover {    transform: translateX(10px);  }}// 三维闪动 bug 处理.transform-fix() { -webkit-backface-visibility: hidden; -webkit-transform-style: preserve-3d; }// Animation.ani(@name, @time: 1s, @ease: ease-in-out, @fillmode: forwards) {  animation-name: @name;  animation-duration: @time;  animation-timing-function: @ease;  animation-fill-mode: @fillmode;}/*-------------------------------------├   功能                              ┆└------------------------------------*/// 浮动, 兼容 IE6.fl() { float: left; *display: inline; _display:inline; }.fr() { float: right; *display: inline; _display:inline; }// 清除浮动.clearfix() {  *zoom: 1;  &:after { display: block; clear: both; content: ''; visibility: hidden; height: 0; }}.clearfix(table) {  *zoom: 1;  &:before, &:after { content: " "; display: table; clear: both; }}// 禁止文本被选择.user-select() { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }// 隐藏鼠标手势.hide-cursor() { cursor: none !important; }// 鼠标禁用样式,但仍然可以触发事件// .disabled() { cursor: not-allowed; }// 禁用元素事件// 1. 阻止任何点击动作的执行// 2. 使链接显示为默认光标(cursor:default)// 3. 阻止触发hover和active状态// 4. 阻止JavaScript点击事件的触发.pointer-events() { pointer-events: none; }// 模糊.blur(@blur: 10px) {  filter: blur(@blur);  -webkit-filter: blur(@blur);  -moz-filter: blur(@blur);  -o-filter: blur(@blur);  -ms-filter: blur(@blur);  filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius='@{blur}');  *zoom: 1;}// 透明度, 兼容 IE8.opacity(@opacity: 20) { opacity: @opacity / 100; filter: alpha(opacity=@opacity); }// 用伪类来显示打印时 a 标签的链接.print-link() {  @media print {    a[href]:after { content: " (" attr(href) ") "; }  }}// 隔行换色.zebra-lists(odd, @color) {  &.odd {    >li:nth-child(odd) { background-color: @color; }  }}.zebra-lists(even, @color) {  &.even {    >li:nth-child(even) { background: green; }  }}// 首字下沉.first-letter(@font-size: 6em) {  &::first-letter{    float: left;    line-height: 1;    font-size: @font-size;  }}// 特殊标记段落第一行.first-line() {  &::first-line{    color: red  }}// 美化选中文本.beauty-select() {  &::selection{   color: #fff;   background-color: #6bc30d;   text-shadow: none;  }}// 美化占位符 placeholder 样式.beauty-placeholder(@fz, @color: #999, @align: left) {  &:-moz-placeholder { font-size: @fz; color: @color; text-align: @align; }  &:-ms-input-placeholder { font-size: @fz; color: @color; text-align: @align; }  &::-webkit-input-placeholder { font-size: @fz; color: @color; text-align: @align; }}// 美化占位符 placeholder 样式(自定义属性和值).beauty-placeholder(custom, @property, @value) {  &:-moz-placeholder { @{property}: @value; }  &:-ms-input-placeholder { @{property}: @value; }  &::-webkit-input-placeholder { @{property}: @value; }}/*-------------------------------------├   图形                              ┆└------------------------------------*/// 三角形.triangle(@width: 4px,@color: #000) {  display: inline-block;  width: 0;  height: 0;  vertical-align: middle;  border-top: @width solid @color;  border-left: @width solid transparent;  border-right: @width solid transparent;}// 三角形箭头气泡效果, IE6-7 无表现.arrow(top, @w: 10px, @color, @x: 50%) {  position: relative;  &:before { position: absolute; bottom: 100%; left: @x; content: " "; height: 0; width: 0; pointer-events: none; border-style: solid; border-color: transparent; border-bottom-color: @color; border-width: unit(@w, px); @margin: -@w; margin-left: unit(@margin, px); }}.arrow(right, @w: 10px, @color, @y: 50%) {  position: relative;  &:before { position: absolute; left: 100%; top: @y; content: " "; height: 0; width: 0; pointer-events: none; border-style: solid; border-color: transparent; border-left-color: @color; border-width: unit(@w, px); @margin: -@w; margin-top: unit(@margin, px); }}.arrow(bottom, @w: 10px, @color, @x: 50%) {  position: relative;  &:before { position: absolute; top: 100%; left: @x; content: " "; height: 0; width: 0; pointer-events: none; border-style: solid; border-color: transparent; border-top-color: @color; border-width: unit(@w, px); @margin: -@w; margin-left: unit(@margin, px); }}.arrow(left, @w: 10px, @color, @y: 50%) {  position: relative;  &:before { position: absolute; right: 100%; top: @y; content: " "; height: 0; width: 0; pointer-events: none; border-style: solid; border-color: transparent; border-right-color: @color; border-width: unit(@w, px); @margin: -@w; margin-top: unit(@margin, px); }}// 三角形箭头气泡效果, 带边框.arrow-with-border(top, @w: 10px, @color, @border-w: 1px, @border-color, @x: 50%) {  position: relative;  &:before, &:after { bottom: 100%; left: @x; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border-style: solid; border-color: transparent; }  &:after { border-bottom-color: @color; border-width: unit(@w, px); @margin: -@w; margin-left: unit(@margin, px); }  &:before { border-bottom-color: @border-color; @arrbo: @w+@border-w; border-width: unit(@arrbo, px); @margin-bo: -@arrbo; margin-left: unit(@margin-bo, px); }}.arrow-with-border(bottom, @w: 10px, @color, @border-w: 1px, @border-color, @x: 50%) {  position: relative;  &:before, &:after { top: 100%; left: @x; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border-style: solid; border-color: transparent; }  &:after { border-top-color: @color; border-width: unit(@w, px); @margin: -@w; margin-left: unit(@margin, px); }  &:before { border-top-color: @border-color; @arrbo: @w+@border-w; border-width: unit(@arrbo, px); @margin-bo: -@arrbo; margin-left: unit(@margin-bo, px); }}.arrow-with-border(left, @w: 10px, @color, @border-w: 1px, @border-color, @y: 50%) {  position: relative;  &:before, &:after { top: @y; right: 100%; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border-style: solid; border-color: transparent; }  &:after { border-right-color: @color; border-width: unit(@w, px); @margin: -@w; margin-top: unit(@margin, px); }  &:before { border-right-color: @border-color; @arrbo: @w+@border-w; border-width: unit(@arrbo, px); @margin-bo: -@arrbo; margin-top: unit(@margin-bo, px); }}.arrow-with-border(right, @w: 10px, @color, @border-w: 1px, @border-color, @y: 50%) {  position: relative;  &:before, &:after { top: @y; left: 100%; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border-style: solid; border-color: transparent; }  &:after { border-left-color: @color; border-width: unit(@w, px); @margin: -@w; margin-top: unit(@margin, px); }  &:before { border-left-color: @border-color; @arrbo: @w+@border-w; border-width: unit(@arrbo, px); @margin-bo: -@arrbo; margin-top: unit(@margin-bo, px); }}/*-------------------------------------├   组件                              ┆└------------------------------------*/// 吸顶导航.fix-header(@h: 70px) {  .fixed();  top: 0;  left: 0;  width: 100%;  height: @h;  z-index: 1000;  // background-color: rgba(256, 256, 256, .92);  // border-bottom: 1px solid rgba(7, 17, 27, 0.1);  // box-shadow: 0px 0px 20px rgba(0,0,0,0.2);}// 吸底导航.fix-header(@h: 70px) {  .fixed();  left: 0;  bottom: 0;  width: 100%;  height: @h;  z-index: 1000;}// 输入框.input-text() {  display: block;  width: 100%;  padding: 4px 8px;  font-size: 14px;  line-height: 1.42858;  color: #333;  border: 1px solid #ddd;  background-color: #fff;  border-radius: 3px;}// 分割线// |/-.separator() {  margin: 0 10px;  color: #999;  font-size: 14px;}// 分割线 / (面包屑导航).separator2() {  &:before {    padding: 0 5px;    color: #ccc;    content: "/a0";  }}// 
// 支付宝:我也是有底线的.hr() {  height: 1px;  margin: 10px 0;  border: 0;  clear: both;  background-color: #e2e2e2;}// 改装的 fieldset// 

登录后复制

返璞归真

.fieldset() {  border-color: #d2d2d2;  border-width: 1px 0 0;  border-style: solid;  legend {    padding: 0 20px;    text-align: center;    font-size: 20px;    font-weight: 300;  }}// 引用区块(模仿 Layui)// 

Lorem ipsum dolor sit amet.

.blockquote() {  margin-bottom: 10px;  padding: 15px;  line-height: 22px;  border-left: 5px solid #009688;  border-radius: 0 2px 2px 0;  background-color: #f2f2f2;}// 徽章 (椭圆、小圆点)// 10.badge(…) {  position: relative;  display: inline-block;  font-size: 12px;  color: #fff;  background-color: #FF5722;}.badge(ellipse) {  min-width: 8px;  height: 18px;  padding: 2px 6px;  text-align: center;  line-height: 18px;  border-radius: 9px;}.badge(dot) {  width: 8px;  height: 8px;  border-radius: 50%;}// 关闭按钮// .close() {  position: relative;  -webkit-appearance: none;  padding: 0;  cursor: pointer;  background: 0 0;  border: 0;  font-size: 20px;  font-weight: 700;  line-height: 1;  color: #000;  text-shadow: 0 1px 0 #fff;  filter: alpha(opacity=20);  opacity: .2;  &:hover {    color: #000;    text-decoration: none;    cursor: pointer;    filter: alpha(opacity=50);    opacity: .5;  }  &:before {    content: ”;    position: absolute;    top: -10px;    left: -10px;    right: -10px;    bottom: -10px;  }}// 1 像素边框问题.onepx(…) {  position: relative;  &:after {    content: ”;    display: block;    position: absolute;    left: 0;    width: 100%;    border-top: 1px solid rgba(7, 17, 27, 0.1);    transform: scaleY(0.5);  }}.onepx(top) { &:after { top: 0; } }.onepx(bottom) { &:after { bottom: 0; } }.onepx-easy(top, @color: #ccc) { box-shadow: inset 0px -1px 1px -1px @color; }.onepx-easy(bottom, @color: #ccc) { box-shadow: inset 0px 1px 1px -1px @color; }

总结

以上就是本文的所有内容,希望会给大家带来帮助!!

相关推荐:

用纯CSS制作带动画的天气图标方法教程

用纯CSS制作带动画的天气图标方法教程

用纯CSS制作带动画的天气图标方法教程

以上就是CSS学习笔记之常用Mixin封装实例代码_CSS教程_CSS_网页制作的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2901297.html

(0)
上一篇 2025年3月11日 00:09:01
下一篇 2025年3月11日 00:09:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何解决PHP中HTML解析的复杂问题?使用voku/simple_html_dom可以!

    可以通过以下地址学习 Composer:学习地址 在我的项目中,我需要从 html 页面中提取特定内容并进行操作。起初,我尝试使用正则表达式和手动解析,但这不仅耗时,而且容易出错。幸运的是,我找到了 voku/simple_html_dom…

    编程技术 2025年4月5日
    200
  • 使用Composer解决CSS前缀问题:padaliyajay/php-autoprefixer库的实践

    可以通过一下地址学习composer:学习地址 在前端开发中,处理不同浏览器的兼容性问题一直是开发者们的一大挑战。特别是当你需要为 css 属性添加前缀以确保在旧版浏览器中也能正常显示时,这个过程往往是繁琐且容易出错的。最近,在开发一个新项…

    编程技术 2025年4月5日
    300
  • 关于HTML5和CSS替换使用

    听到html5的都知道它的强大,如更多的描述性标记、较少依赖于插件的多媒体支持、跨文档消息通信、web sockets、客户端存储、更强大的表单、提升可访问性、先进的选择器、强大的视觉效果。费话不多说,细细说来 被废弃的标签和属性 废弃的标…

    编程技术 2025年4月4日
    100
  • style对象的cssText方法有哪些使用方法

    这次给大家带来style对象的csstext方法有哪些使用方法,style对象的csstext方法使用的注意事项有哪些,下面就是实战案例,一起来看一下。 cssText 本质是什么?   cssText 的本质就是设置 HTML 元素的 s…

    编程技术 2025年4月4日
    200
  • 跨平台开发中的Java框架选择

    跨平台 java 应用程序开发的最佳框架选择取决于项目需求。原生开发框架 (swift、kotlin) 提供最佳性能,但需要针对每个平台单独编写代码。跨平台框架 (react native、flutter) 允许代码重用,但性能可能受限。选…

    2025年4月2日
    100
  • eclipse怎么改黑色主题

    要将 Eclipse 的主题更改为黑色,请按照以下步骤操作:1. 打开主题菜单;2. 选择黑色主题;3. 应用更改;4. 重启 Eclipse。使用第三方插件或自定义 CSS 可以进一步自定义主题。 如何修改 Eclipse 为黑色主题 要…

    2025年4月2日
    200
  • eclipse怎么安装emmet

    Emmet 的 Eclipse 安装分以下步骤进行:安装 Emmet 插件:转到菜单栏中的“帮助”>“市场”,搜索并安装“Emmet for Eclipse”。启用 Emmet:重新启动 Eclipse,转到“窗口”>“首选项”…

    2025年4月2日
    200
  • idea怎么刷新项目

    直接刷新项目方法:1. 单击“Reload”按钮(Ctrl + F5);2. 右键单击项目,选择“Reload All from Disk”。强制刷新项目:1. 单击“Invalidate Caches / Restart”按钮(Ctrl …

    2025年4月2日
    300
  • yii框架怎么引用css

    yii框架引用css的方法:1、内联样式,将CSS样式直接写在视图文件中的HTML元素上;2、内部样式表,在视图文件的head标签内使用style标签来定义CSS样式;3、外部样式表,创建一个独立的CSS文件,并在视图文件中使用link标签…

    2025年4月2日
    100
  • 解决Laravel项目中CSS文件无法加载的问题

    解决Laravel项目中CSS文件无法加载的问题,需要具体代码示例 在开发Laravel项目的过程中,有时候会遇到CSS文件无法加载的问题,这可能会导致页面样式混乱或者无法正常显示页面内容。这个问题通常是由于文件路径配置或者缓存导致的,接下…

    2025年4月2日
    200

发表回复

登录后才能评论