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-*-*)
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文件操做
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; } }
4.3 普通盒子 寬 高 背景色app
/*------不加括號便是普通樣式類,也是封裝的一個函數,編譯的時候,也會跟着編譯加;括號僅僅是封裝的函數,編譯的時候不是編譯函數-------*/ .pub(){ //-->不加括號會被編譯出來,加了不會被編譯出來 width: 100px; height: 100px; background: green; } .box2{ .pub(); //--->也能夠 .pub; background: red; }
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; }
4.5 做爲URL的變量ide
//做爲URL的變量 @imgurl:"https://www.baidu.com/img/"; //引用 .box2{ width:100px; height:100px; background: url("@{imgurl}bdlogo.png"); }
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; }
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); }
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); }
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; }
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; }
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); } }
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>×</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; }
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; }
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);
unit less
@size: 100*1rem; /*修改大小的函數*/ .width(@num) { width: @num / @size; } .height(@num) { height: @num / @size; }
web less
.wrap{ .width(100); }
6.參考連接