摘要:字體斷行超出顯示省略號屬性設(shè)置如何處理元素內(nèi)的空白默認。其行為方式類似中的標簽。某設(shè)計稿下個,橫向排布,每個的寬度為路徑名此時此時此時因此,一個的實際只有的元素的寬度在不同設(shè)備下顯示了不同的寬度,實現(xiàn)了響應(yīng)式適配的問題。
1、字體斷行
超出顯示省略號
p{text-overflow:ellipsis;overflow:hidden;}
white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit;
white-space 屬性設(shè)置如何處理元素內(nèi)的空白 normal 默認。空白會被瀏覽器忽略。 pre 空白會被瀏覽器保留。其行為方式類似 HTML 中的 pre 標簽。 nowrap 文本不會換行,文本會在在同一行上繼續(xù),直到遇到 br 標簽為止。 pre-wrap 保留空白符序列,但是正常地進行換行。 pre-line 合并空白符序列,但是保留換行符。 inherit 規(guī)定應(yīng)該從父元素繼承 white-space 屬性的值。
word-wrap: normal|break-word;
word-wrap 屬性用來標明是否允許瀏覽器在單詞內(nèi)進行斷句,這是為了防止當一個字符串太長而找不到它的自然斷句點時產(chǎn)生溢出現(xiàn)象。 normal: 只在允許的斷字點換行(瀏覽器保持默認處理) break-word:在長單詞或URL地址內(nèi)部進行換行
word-break 屬性用來標明怎么樣進行單詞內(nèi)的斷句。
normal:使用瀏覽器默認的換行規(guī)則。 break-all:允許再單詞內(nèi)換行 keep-all:只能在半角空格或連字符處換行
強制不換行
span { dispalay: inline-block; overflow: hidden; /* 超出部分隱藏 */ text-overflow: ellipsis; /* 如果內(nèi)容超出顯示為省略號 */ white-space: nowrap; /* 強制不換行 */ }
CSS自動換行
span { dispalay: inline-block; word-break: normal; /* 自動換行 */ }
強制斷行
span { dispalay: inline-block; word-break:break-all; /* 強制英文單詞斷行 */ }2、移動端自適應(yīng) 使用媒體查詢
@media (min-width: 768px) { .main { width: 25%; float: left; } }
link rel="stylesheet" type="text/css" media="screen and (min-width: 400px) and (max-device-width: 600px)" href="smallScreen.css" />寬度使用百分比
由于網(wǎng)頁會根據(jù)屏幕寬度調(diào)整布局,所以盡可能的使用百分比
使用相對單位rem設(shè)計稿給什么尺寸,我們就將其縮小100倍,最后換算成rem單位。比如,設(shè)計稿上某個title的font-size為32px,此時寫CSS樣式時就直接縮小100倍,即0.32rem。
html元素的具體尺寸 = 設(shè)計稿尺寸 / 100 * (不同設(shè)備的理想視口寬度 / 基準值(即設(shè)計稿橫向像素) * 100) (單位px)
當1(單位rem) = html根元素的font-size = 不同設(shè)備的理想視口寬度 / 基準值(即設(shè)計稿橫向像素) * 100 (單位px)時,html元素的具體尺寸 = 設(shè)計稿尺寸 / 100 (單位rem)
當deviceWidth大于設(shè)計稿的橫向分辨率時,html的font-size始終等于 設(shè)置為當設(shè)備理想寬度等于設(shè)計稿橫向?qū)挾葧r的值
//orientationchange方向改變事件 (function (doc, win) { var docEl = doc.documentElement,//根元素html //判斷窗口有沒有orientationchange這個方法,有就賦值給一個變量,沒有就返回resize方法。 resizeEvt = "orientationchange" in window ? "orientationchange" : "resize"; recalc = function () { var clientWidth = document.documentElement.clientWidth; if (!clientWidth) return; if(clientWidth > 1080) clientWidth = 1080; //把document的fontSize大小設(shè)置成跟窗口成一定比例的大小,從而實現(xiàn)響應(yīng)式效果。 docEl.style.fontSize = 20 * (clientWidth / 1080) + "px"; // 1080 為UI給的設(shè)計稿橫向像素 }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); //addEventListener事件方法接受三個參數(shù):第一個是事件名稱比如點擊事件onclick,第二個是要執(zhí)行的函數(shù),第三個是布爾值 doc.addEventListener("DOMContentLoaded", recalc, false)//綁定瀏覽器縮放與加載時間 })(document, window);設(shè)置視口縮放
動態(tài)設(shè)置viewport的scale
let dpr = window.devicePixelRatio; let meta = document.createElement("meta"); let initialScale = 1 / dpr; let maximumScale = 1 / dpr; let minimumScale = 1 / dpr; meta.setAttribute("name", "viewport"); meta.setAttribute("content", `width=device-width, user-scalable=no, initial-scale=${initialScale}, maximum-scale=${maximumScale}, minimum-scale=${minimumScale}`); document.head.appendChild(meta); 因此,可以直接根據(jù)設(shè)計稿的尺寸寫CSS樣式,如設(shè)計稿下有5個li元素,寬度為200px,此時不同設(shè)備下li的寬度 iPhone5 : li { width: 200px } 實際寬度為:100px iPhone6 : li { width: 200px } 實際寬度為:100px iPhone6+: li { width: 200px } 實際寬度為:66.667px
(2)動態(tài)計算html的font-size
var clientWidth = document.documentElement.clientWidth; if (!clientWidth) return; if(clientWidth > 1080) clientWidth = 1080; document.documentElement.style.fontSize = clientWidth / 10 + "px";
(3)布局的時候,各元素的css尺寸=設(shè)計稿標注尺寸/設(shè)計稿橫向分辨率/10(不方便計算),或者通過css處理器(參考如下)
SASS @baseFontSize: 75;//基于視覺稿橫屏尺寸/100得出的基準font-size @function px2rem ($value) { $para: 75px; @return $value / @baseFontSize+ rem; } JS // 設(shè)置根元素的font-size。通過獲取不同設(shè)備的理想視口寬度,再除以10。(除以10是因為不想font-size太大。) let idealViewWidth = window.screen.width; document.documentElement.style.fontSize = idealViewWidth / 10 + "px"; 在不同設(shè)備下根元素的`font-size`: iPhone5 : 320px / 10 = 32px iPhone6 : 375px / 10 = 37.5px iPhone6+: 414px / 10 = 41.4px 根據(jù)以上,可以看一個例子。某設(shè)計稿下5個li,橫向排布,每個的寬度為200px CSS @import (路徑名) iPhone5: li { width: px2rem(200px) } => width: 85.333px // 此時(200px / 75px = 2.667rem) 2.667rem = 2.667 * (320 / 10) = 85.3333px iPhone6: li { width: px2rem(200px) } => width: 100px // 此時(200px / 75px = 2.667rem) 2.667rem = 2.667 * (375 / 10) = 100px iPhone6+: li { width: px2rem(200px) } => width: 4138px // 此時(200px / 75px = 2.667rem) 2.667rem = 2.667 * (414 / 10) = 110.4138px 因此,一個200px的(實際只有100px)的li元素的寬度在不同設(shè)備下顯示了不同的寬度,實現(xiàn)了響應(yīng)式適配的問題。3、移動端一像素邊框?qū)崿F(xiàn) 設(shè)置視口縮放
參照 (2、移動端自適應(yīng)-設(shè)置視口縮放)內(nèi)容,可以像PC web頁面一樣設(shè)置1px
使用transform: scale上邊緣框
.border-top-1px { position: relative; } .border-top-1px:before { position: absolute; content: ""; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); top: 0; left: 0; width: 100%; border-top: 1px solid green; z-index: 10; }
下邊緣框
.border-bottom-1px { position: relative; } .border-bottom-1px:before { content: ""; position: absolute; bottom:0; left:0; width: 100%; border-bottom: 1px solid green; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scale(0.5, 0.5); transform: scale(0.5, 0.5); -webkit-box-sizing: border-box; box-sizing: border-box; }
四邊框
.border-1px { position: relative; } .border-1px input { position: relative; width: 100%; height: 30px; padding: 0 10px; border: none; outline: none; text-overflow: ellipsis; background: transparent; } .border-1px:before { content: ""; position: absolute; width: 200%; height: 200%; border: 1px solid #000; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; -o-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scale(0.5, 0.5); -ms-transform: scale(0.5, 0.5); -o-transform: scale(0.5, 0.5); transform: scale(0.5, 0.5); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
媒體查詢實現(xiàn)
.border-bottom{ position: relative; border-top: none !important; } .border-bottom::after { content: " "; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background-color: #e4e4e4; -webkit-transform-origin: left bottom; transform-origin: left bottom; } /* 2倍屏 */ @media only screen and (-webkit-min-device-pixel-ratio: 2.0) { .border-bottom::after { -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } } /* 3倍屏 */ @media only screen and (-webkit-min-device-pixel-ratio: 3.0) { .border-bottom::after { -webkit-transform: scaleY(0.33); transform: scaleY(0.33); } }
http://caibaojian.com/mobile-...
https://www.cnblogs.com/uncle...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/115957.html
摘要:注本文首發(fā)于個人博客學習筆記。最近看了下變量,又名自定義屬性,跟大家分享一下我的學習筆記。使用自定義屬性來設(shè)置變量名,并使用特定的來訪問。二學習筆記聲明調(diào)用聲明方式變量聲明的方式非常簡單,如下,聲明了一個名叫的變量。 注:本文首發(fā)于個人博客 《CSS Variables學習筆記》。 最近看了下CSS Variables(CSS變量,又名CSS自定義屬性),跟大家分享一下我的學習筆記。 ...
摘要:中添加同樣起作用。說明提供的命令,打包時模塊綁定的加載器為命令,監(jiān)聽打包的文件,只要改變自動會打包命令窗口顯示打包進度命令窗口列出引入的所有模塊命令窗口顯示打包引入模塊的原因 標注:本筆記來自 imooc-qbaty老師-webpack深入與實戰(zhàn)gitbash(or CMD)進行命令操作 一、準備工作 lenovo@lenovo-PC MINGW64 ~ $ cd /d/imooc/ ...
摘要:指普通的規(guī)則,由選擇器和屬性指定構(gòu)成的規(guī)則。用于跟命名空間配合的一個規(guī)則,表示內(nèi)部的選擇器全都帶上特定命名空間。注意屬性不允許使用連續(xù)的兩個中劃線開頭,否則會被認為是變量。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文有...
摘要:指普通的規(guī)則,由選擇器和屬性指定構(gòu)成的規(guī)則。用于跟命名空間配合的一個規(guī)則,表示內(nèi)部的選擇器全都帶上特定命名空間。注意屬性不允許使用連續(xù)的兩個中劃線開頭,否則會被認為是變量。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文有...
摘要:指普通的規(guī)則,由選擇器和屬性指定構(gòu)成的規(guī)則。用于跟命名空間配合的一個規(guī)則,表示內(nèi)部的選擇器全都帶上特定命名空間。注意屬性不允許使用連續(xù)的兩個中劃線開頭,否則會被認為是變量。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文有...
閱讀 2418·2021-10-11 10:57
閱讀 1274·2021-10-09 09:59
閱讀 1986·2019-08-30 15:53
閱讀 3206·2019-08-30 15:53
閱讀 1000·2019-08-30 15:45
閱讀 727·2019-08-30 15:44
閱讀 3432·2019-08-30 14:24
閱讀 946·2019-08-30 14:21