less 經典範例 bootstrap 的 less 版本 經常使用 less 代碼

1. bootstrap 的 less 版本css

2.less 文件分佈html

/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */

// Core variables and mixins 
// 引入變量和mixin函數
@import "variables.less";       //Bootstrap變量
@import "mixins.less";          //引入Bootstrap mixin工具函數

// Reset and dependencies   
// 重置元素樣式和依賴關係
@import "normalize.less";       //重置元素樣式,統一瀏覽器顯示
@import "print.less";           //設置打印樣式
@import "glyphicons.less";      //icon圖標

// Core CSS
// CSS全局樣式
@import "scaffolding.less";     //重置元素樣式,統一/增添Bootstrap樣式。(盒模型寬度、字體大小、a鼠標樣式、圖片、sr-only和button)
@import "type.less";            //排版
@import "code.less";            //代碼
@import "grid.less";            //定義柵格系統樣式 (.container,.row和各.col-*-*)
@import "tables.less";          //表格   
@import "forms.less";           //表單
@import "buttons.less";         //定義按鈕基本樣式

// Components
// 組件
@import "component-animations.less";
@import "dropdowns.less";               //下拉按鈕
@import "button-groups.less";           //按鈕組
@import "input-groups.less";            //表單元素樣式
@import "navs.less";                    //導航樣式
@import "navbar.less";                  //導航條樣式
@import "breadcrumbs.less";             //眉毛連接
@import "pagination.less";              //分頁導航
@import "pager.less";                   //翻頁   (上一頁、下一頁 .pager,.next,.previous,.disabled)
@import "labels.less";                  //標籤
@import "badges.less";                  //徽章
@import "jumbotron.less";               //巨幕
@import "thumbnails.less";              //縮略圖
@import "alerts.less";                  //警告框
@import "progress-bars.less";           //進度條
@import "media.less";                   //媒體對象
@import "list-group.less";              //列表組
@import "panels.less";                  //面板
@import "responsive-embed.less";        //具備響應式特性的嵌入內容
@import "wells.less";                   //把 Well 用在元素上,就能有嵌入(inset)的簡單效果。
@import "close.less";

// Components w/ JavaScript
// JS插件
@import "modals.less";                  //對話框樣式
@import "tooltip.less";                 //工具提示
@import "popovers.less";                //彈出框
@import "carousel.less";                //輪播

// Utility classes
// 實用工具類
@import "utilities.less";               //設置浮動,顯示/隱藏,固定定位
@import "responsive-utilities.less";    //設置柵格系統中各列顯示/隱藏,打印樣式(col-*-*)
View Code

3.相關連接git

Bootstrap LESSgithub

4. 擴展:經常使用 less 代碼web

4.1 文件導入前綴bootstrap

@import (reference) "main.less";  //引用LESS文件,可是不輸出,不會編譯出來
@import (inline) "main.less";  //引用LESS文件,可是不進行操做
@import (once) "main.less";  //引用LESS文件,可是不進行操做
@import (less) "index.css";  //不管是什麼格式的文件,都把他做爲LESS文件操做
@import (css) "main.less";  //不管是什麼格式的文件,都把他做爲CSS文件操做
View Code

4.2 動畫瀏覽器

.transition(@property:all,@duration:1s,@timing-function:linear,@delay:0s){
     //transition:@property @duration @timing-function @delay;
     transition:@arguments;
     -webkit-transition:@arguments;
     -moz-transition:@arguments;
     -ms-transition:@arguments;
     -o-transition:@arguments;  
}
    
.wrap{
    .transition(@duration:2s);
    &:hover{
        width:200px;
    }
} 
View Code

4.3 普通盒子  寬 高 背景色app

/*------不加括號便是普通樣式類,也是封裝的一個函數,編譯的時候,也會跟着編譯加;括號僅僅是封裝的函數,編譯的時候不是編譯函數-------*/
.pub(){ //-->不加括號會被編譯出來,加了不會被編譯出來
    width: 100px;
    height: 100px;
    background: green;
}
.box2{
    .pub(); //--->也能夠 .pub;
    background: red;

}
View Code

4.4 1px 邊框less

.border-1px(@color:#e5e5e5){
    position: relative;
    &:after{
        display: block;
        position: absolute;
        left: 0;
        bottom: 0;
        width: 100%;
        border-top:1px solid @color;
        content: '';
    }
}
.box2{
    width:100px;
    height:100px;
    .border-1px;
}
View Code

4.5 做爲URL的變量ide

//做爲URL的變量
@imgurl:"https://www.baidu.com/img/";
//引用
.box2{
    width:100px;
    height:100px;
    background: url("@{imgurl}bdlogo.png");
}
View Code

4.6  //字體設置

@font_size: 14px; //默認字體大小
.font_s(@fs:@font_size){
font-size: @fs;
}


@font_family: "microsoft yahei"; //默認字體顏色

.font_style(@fc: #333, @fs: @font_size, @ff: @font_family) {

color: @fc;

font-size: @fs;

font-family: @ff;

}
View Code

4.7 三角形

//三角樣式---①
.triangle-less(top, @w:50px, @c:#ccc) {
    border-color:  transparent transparent @c transparent;
}
.triangle-less(bottom, @w:50px, @c:#ccc) {
    border-color:  @c transparent transparent transparent;
}
.triangle-less(left, @w:50px, @c:#ccc) {
    border-color:  transparent @c transparent transparent;
}
.triangle-less(right, @w:50px, @c:#ccc) {
    border-color:  transparent transparent transparent @c;
}
//@_ 匹配全部
.triangle-less(@_, @w:50px, @c:#ccc) {//傳參保存一致,因此@w:50px和@c:#ccc也必須寫上
    width: 0;
    height: 0;
    border-width: @w;
    border-style: solid;
}
 
//引用
.box{
  .triangle-less(top, 100px, green); 
}
View Code

4.8 漸變

//漸變
.jh2(@color1,@color2,@dd:180deg){    
    background: -webkit-linear-gradient(@dd,@color1,@color2);    
    background: -moz-linear-gradient(@dd,@color1,@color2);    
    background: -ms-linear-gradient(@dd,@color1,@color2);    
    background: -o-linear-gradient(@dd,@color1,@color2);    
    background: linear-gradient(@dd,@color1,@color2);    
}    
.box2{        
    width:100px;    
    height:100px;    
    .jh2(red,pink);    
}  
View Code

4.9 圓角

//圓角
.border_radius(@radius:5px){  
    -wekit-border-radius: @radius;  
    -max-border-radius: @radius;  
    border-radius: @radius;  
} 

.box2{
    .border;
    .border_radius;
    width:200px;
    height:200px;
}
View Code

4.10 溢出截斷-

.subText() {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}

4.11 flex 垂直居中

.flex(){
    display: -webkit-box; 
    display: -moz-box; 
    display:-webkit-flex;
    display: -ms-flexbox;
    display:flex;
}
.flex-auto{
    .flex();
    -webkit-justify-content: center;
    -moz-justify-content: center;
    -ms-justify-content: center;
    justify-content: center;
    -webkit-align-items: center;
    -moz-align-items: center;
    -ms-align-items: center;
    align-items: center;
}
View Code

4.12 1px

/*1像素*/
.borderLine(@color:#dcdcdc,@top:auto,@right:auto,@bottom:0,@left:0){
    position: relative;
    &::after{
        content: '';
        position: absolute;
        left: @left;
        bottom: @bottom;
        right: @right;
        top: @top;
        height: 1px;
        width: 100%;
        background-color: @color;
        display: block;
        z-index: 15;
        -webkit-transform-origin: 50% 100%;
        transform-origin: 50% 100%;
    }
}
.border-b{
    .borderLine(@color:#dcdcdd,@top:auto,@right:auto,@bottom:0,@left:0)
}
 
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
    .border-b:after {
        -webkit-transform: scaleY(0.5);
        transform: scaleY(0.5);
    }
}
@media only screen and (-webkit-min-device-pixel-ratio: 3) {
    .border-b::after {
        -webkit-transform: scaleY(0.33);
        transform: scaleY(0.33);
    }
}
View Code

5.其餘擴展

5.1 其餘經常使用組件 less

/**
* 做品: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優化)
// <a href="" title="Logo SEO 優化 "><h1 class="logo">xx</h1></a>
.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; }

// 鼠標禁用樣式,但仍然能夠觸發事件
// <input type="text" disabled="disabled">
.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;
}

// 分割線
// <span class="separator">|/-</span>
.separator() {
  margin: 0 10px;
  color: #999;
  font-size: 14px;
}

// 分割線 / (麪包屑導航)
.separator2() {
  &:before {
    padding: 0 5px;
    color: #ccc;
    content: "/\00a0";
  }
}

// <hr class="hr">
// 支付寶:我也是有底線的
.hr() {
  height: 1px;
  margin: 10px 0;
  border: 0;
  clear: both;
  background-color: #e2e2e2;
}

// 改裝的 fieldset
// <fieldset><legend>返璞歸真</legend></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)
// <div class="blockquote">Lorem ipsum dolor sit amet.</div>
.blockquote() {
  margin-bottom: 10px;
  padding: 15px;
  line-height: 22px;
  border-left: 5px solid #009688;
  border-radius: 0 2px 2px 0;
  background-color: #f2f2f2;
}

// 徽章 (橢圓、小圓點)
// <span class="badge">10</span>
.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%;
}

// 關閉按鈕
// <button class="close" type="button"><span>&times;</span></button>
.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; }
View Code

5.2 reset

@charset "utg-8";
/* CSS Document */
html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0;}
body{ background-color:#fff;}
html,body,fieldset,img,iframe,abbr{border:0;}
li{list-style:none;}
textarea{overflow:auto;resize:none;}
a,button{cursor:pointer;}
h1,h2,h3,h4,h5,h6,em,strong,b{font-weight:bold;}
a,a:hover{text-decoration:none;}
body,textarea,input,button{
    color:#62a1c9;
}
 
html,body{
    width:100%;
    min-height: 930px;
    height: auto;
}
 
.hide{
    display: none;
}
 
.text-shadow (@string: 0 1px 3px rgba(0, 0, 0, 0.25)) {
    text-shadow: @string;
}
.box-shadow (@string) {
    -webkit-box-shadow: @string;
    -moz-box-shadow:    @string;
    box-shadow:         @string;
}
.drop-shadow (@x: 0, @y: 1px, @blur: 2px, @spread: 0, @alpha: 0.25) {
    -webkit-box-shadow:    @x @y @blur @spread rgba(0, 0, 0, @alpha);
    -moz-box-shadow:    @x @y @blur @spread rgba(0, 0, 0, @alpha);
    box-shadow:        @x @y @blur @spread rgba(0, 0, 0, @alpha);
}
.inner-shadow (@x: 0, @y: 1px, @blur: 2px, @spread: 0, @alpha: 0.25) {
    -webkit-box-shadow: inset @x @y @blur @spread rgba(0, 0, 0, @alpha);
    -moz-box-shadow:    inset @x @y @blur @spread rgba(0, 0, 0, @alpha);
    box-shadow:         inset @x @y @blur @spread rgba(0, 0, 0, @alpha);
}
 
.box-sizing (@type: border-box) {
    -webkit-box-sizing: @type;
    -moz-box-sizing:    @type;
    box-sizing:         @type;
}
 
.border-radius (@radius: 5px) {
    -webkit-border-radius: @radius;
    -moz-border-radius:    @radius;
    border-radius:         @radius;
 
    -moz-background-clip:    padding;
    -webkit-background-clip: padding-box;
    background-clip:         padding-box;
}
.border-radiuses (@topright: 0, @bottomright: 0, @bottomleft: 0, @topleft: 0) {
    -webkit-border-top-right-radius:    @topright;
    -webkit-border-bottom-right-radius: @bottomright;
    -webkit-border-bottom-left-radius:  @bottomleft;
    -webkit-border-top-left-radius:     @topleft;
 
    -moz-border-radius-topright:        @topright;
    -moz-border-radius-bottomright:     @bottomright;
    -moz-border-radius-bottomleft:      @bottomleft;
    -moz-border-radius-topleft:         @topleft;
 
    border-top-right-radius:            @topright;
    border-bottom-right-radius:         @bottomright;
    border-bottom-left-radius:          @bottomleft;
    border-top-left-radius:             @topleft;
 
    -moz-background-clip:    padding; 
    -webkit-background-clip: padding-box; 
    background-clip:         padding-box; 
}
 
.opacity (@opacity: 0.5) {
    @tempOpacity: @opacity * 100;
    -webkit-opacity:     @opacity;
    -moz-opacity:         @opacity;
    opacity:         @opacity;
    filter:alpha(opacity=@tempOpacity);
}
 
.gradient (@startColor: #eee, @endColor: white) {
    background-color: @startColor;
    background: -webkit-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
    background: -webkit-linear-gradient(top, @startColor, @endColor);
    background: -moz-linear-gradient(top, @startColor, @endColor);
    background: -ms-linear-gradient(top, @startColor, @endColor);
    background: -o-linear-gradient(top, @startColor, @endColor);
}
.horizontal-gradient (@startColor: #eee, @endColor: white) {
     background-color: @startColor;
    background-image: -webkit-gradient(linear, left top, right top, from(@startColor), to(@endColor));
    background-image: -webkit-linear-gradient(left, @startColor, @endColor);
    background-image: -moz-linear-gradient(left, @startColor, @endColor);
    background-image: -ms-linear-gradient(left, @startColor, @endColor);
    background-image: -o-linear-gradient(left, @startColor, @endColor);
    background-image: linear-gradient(left, @startColor, @endColor);
}
 
.animation (@name, @duration: 300ms, @delay: 0, @ease: ease) {
    -webkit-animation: @name @duration @delay @ease;
    -moz-animation:    @name @duration @delay @ease;
    -ms-animation:     @name @duration @delay @ease;
    animation:           @name @duration @delay @ease;
}
 
.transition (@transition) {
    -webkit-transition: @transition;  
    -moz-transition:    @transition;
    -ms-transition:     @transition; 
    -o-transition:      @transition;
    transition:        @transition;
}
.transform(@string){
    -webkit-transform: @string;
    -moz-transform:      @string;
    -ms-transform:          @string;
    -o-transform:          @string;
    transform:               @string;
}
.scale (@factor) {
    -webkit-transform: scale(@factor);
    -moz-transform:      scale(@factor);
    -ms-transform:          scale(@factor);
    -o-transform:          scale(@factor);
    transform:               scale(@factor);
}
.rotate (@deg) {
    -webkit-transform: rotate(@deg);
    -moz-transform:      rotate(@deg);
    -ms-transform:          rotate(@deg);
    -o-transform:          rotate(@deg);
    transform:               rotate(@deg);
}
.skew (@deg, @deg2) {
    -webkit-transform:       skew(@deg, @deg2);
    -moz-transform:      skew(@deg, @deg2);
    -ms-transform:          skew(@deg, @deg2);
    -o-transform:          skew(@deg, @deg2);
    transform:               skew(@deg, @deg2);
}
.translate (@x, @y:0) {
    -webkit-transform:       translate(@x, @y);
    -moz-transform:      translate(@x, @y);
    -ms-transform:          translate(@x, @y);
    -o-transform:          translate(@x, @y);
    transform:               translate(@x, @y);
}
.translate3d (@x, @y: 0, @z: 0) {
    -webkit-transform:       translate3d(@x, @y, @z);
    -moz-transform:      translate3d(@x, @y, @z);
    -ms-transform:          translate3d(@x, @y, @z);
    -o-transform:          translate3d(@x, @y, @z);
    transform:               translate3d(@x, @y, @z);
}
.perspective (@value: 1000) {
    -webkit-perspective:     @value;
    -moz-perspective:     @value;
    -ms-perspective:     @value;
    perspective:         @value;
}
.transform-origin (@x:center, @y:center) {
    -webkit-transform-origin: @x @y;
    -moz-transform-origin:    @x @y;
    -ms-transform-origin:     @x @y;
    -o-transform-origin:      @x @y;
    transform-origin:            @x @y;
}
 
.keyframes(@name, @frames) {
    @-webkit-keyframes @name { @frames(); }
    @-moz-keyframes @name { @frames(); }
    @-ms-keyframes @name { @frames(); }
    @-o-keyframes @name { @frames(); }
    @keyframes @name { @frames(); }
}
 
.animation(@arg){
    -moz-animation:@arg;
    -webkit-animation:@arg;
    -o-animation:@arg;
    -ms-animation:@arg;
    animation:@arg;
}
View Code

5.3 手機端 rem

關鍵代碼 js

        (function(doc, win) {  
            var docEl = doc.documentElement,  
                resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',  
                recalc = function() {  
                    var clientWidth = docEl.clientWidth;  
                    if (!clientWidth) return;  
                    if(clientWidth>=750){  
                      docEl.style.fontSize = '100px'  
                    }else{  
                      docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';  
                    }  
          
                };  
            if (!doc.addEventListener) return;  
            win.addEventListener(resizeEvt, recalc, false);  
            doc.addEventListener('DOMContentLoaded', recalc, false);  
        })(document, window); 
View Code

unit  less

@size: 100*1rem;  
/*修改大小的函數*/  
.width(@num) {  
  width: @num / @size;  
}  
  
.height(@num) {  
  height: @num / @size;  
}  
View Code

web less

.wrap{ .width(100); } 

 

6.參考連接

CSS經常使用Mixin封裝

相關文章
相關標籤/搜索