摘要:控制表單控件的禁用狀態(tài)。老不支持生成絕對定位的元素,相對于瀏覽器窗口進行定位。生成相對定位的元素,相對于其正常位置進行定位。由于浮動框不在文檔的普通流中,所以文檔的普通流的塊框表現(xiàn)得就像浮動框不存在一樣。
介紹
項目已經(jīng)開源:https://github.com/nanhupatar... 歡迎PR
推薦關(guān)注我們的公眾號
display: none; 與 visibility: hidden; 的區(qū)別相同: 它們都能讓元素不可見
區(qū)別:
display:none;會讓元素完全從渲染樹中消失,渲染的時候不占據(jù)任何空間;visibility: hidden;不會讓元素從渲染樹消失,渲染師元素繼續(xù)占據(jù)空間,只是內(nèi)容不可見
display: none;是非繼承屬性,子孫節(jié)點消失由于元素從渲染樹消失造成,通過修改子孫節(jié)點屬性無法顯示;visibility:hidden;是繼承屬性,子孫節(jié)點消失由于繼承了 hidden,通過設(shè)置 visibility: visible;可以讓子孫節(jié)點顯式
修改常規(guī)流中元素的 display 通常會造成文檔重排。修改 visibility 屬性只會造成本元素的重繪
讀屏器不會讀取 display: none;元素內(nèi)容;會讀取 visibility: hidden 元素內(nèi)容
css hack 原理及常用 hack原理:利用不同瀏覽器對 CSS 的支持和解析結(jié)果不一樣編寫針對特定瀏覽器樣式。常見的 hack 有 1)屬性 hack。2)選擇器 hack。3)IE 條件注釋
IE 條件注釋:適用于[IE5, IE9]常見格式如下
選擇器 hack:不同瀏覽器對選擇器的支持不一樣
/***** Selector Hacks ******/ /* IE6 and below */ * html #uno { color: red } /* IE7 */ *:first-child+html #dos { color: red } /* IE7, FF, Saf, Opera */ html>body #tres { color: red } /* IE8, FF, Saf, Opera (Everything but IE 6,7) */ html>/**/body #cuatro { color: red } /* Opera 9.27 and below, safari 2 */ html:first-child #cinco { color: red } /* Safari 2-3 */ html[xmlns*=""] body:last-child #seis { color: red } /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ body:nth-of-type(1) #siete { color: red } /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ body:first-of-type #ocho { color: red } /* saf3+, chrome1+ */ @media screen and (-webkit-min-device-pixel-ratio:0) { #diez { color: red } } /* iPhone / mobile webkit */ @media screen and (max-device-width: 480px) { #veintiseis { color: red } } /* Safari 2 - 3.1 */ html[xmlns*=""]:root #trece { color: red } /* Safari 2 - 3.1, Opera 9.25 */ *|html[xmlns*=""] #catorce { color: red } /* Everything but IE6-8 */ :root *> #quince { color: red } /* IE7 */ *+html #dieciocho { color: red } /* Firefox only. 1+ */ #veinticuatro, x:-moz-any-link { color: red } /* Firefox 3.0+ */ #veinticinco, x:-moz-any-link, x:default { color: red }
屬性 hack:不同瀏覽器解析 bug 或方法
/* IE6 */ #once { _color: blue } /* IE6, IE7 */ #doce { *color: blue; /* or #color: blue */ } /* Everything but IE6 */ #diecisiete { color/**/: blue } /* IE6, IE7, IE8 */ #diecinueve { color: blue9; } /* IE7, IE8 */ #veinte { color/***/: blue9; } /* IE6, IE7 -- acts as an !important */ #veintesiete { color: blue !ie; } /* string after ! can be anything */link 與 @import 的區(qū)別
link 是 HTML 方式, @import 是 CSS 方式
link 最大限度支持并行下載,@import 過多嵌套導(dǎo)致串行下載,出現(xiàn) FOUC
link 可以通過 rel="alternate stylesheet" 指定候選樣式
瀏覽器對 link 支持早于@import ,可以使用 @import 對老瀏覽器隱藏樣式
@import 必須在樣式規(guī)則之前,可以在 css 文件中引用其他文件
總體來說:link 優(yōu)于@import
CSS 有哪些繼承屬性
關(guān)于文字排版的屬性如:
font
word-break
letter-spacing
text-align
text-rendering
word-spacing
white-space
text-indent
text-transform
text-shadow
line-height
color
visibility
cursor
display,float,position 的關(guān)系如果 display 為 none,那么 position 和 float 都不起作用,這種情況下元素不產(chǎn)生框
否則,如果 position 值為 absolute 或者 fixed,框就是絕對定位的,float 的計算值為 none,display 根據(jù)下面的表格進行調(diào)整
否則,如果 float 不是 none,框是浮動的,display 根據(jù)下表進行調(diào)整
否則,如果元素是根元素,display 根據(jù)下表進行調(diào)整
其他情況下 display 的值為指定值 總結(jié)起來:絕對定位、浮動、根元素都需要調(diào)整 display
外邊距折疊(collapsing margins)外邊距重疊就是 margin-collapse
相鄰的兩個盒子(可能是兄弟關(guān)系也可能是祖先關(guān)系)的外邊距可以結(jié)合成一個多帶帶的外邊距。 這種合并外邊距的方式被稱為折疊,結(jié)合而成的外邊距稱為折疊外邊距
折疊結(jié)果遵循下列計算規(guī)則:
兩個相鄰的外邊距都是正數(shù)時,折疊結(jié)果是它們兩者之間較大的值
兩個相鄰的外邊距都是負數(shù)時,折疊結(jié)果是兩者絕對值的較大值
兩個外邊距一正一負時,折疊結(jié)果是兩者的相加的和
介紹一下標(biāo)準(zhǔn)的 CSS 的盒子模型?低版本 IE 的盒子模型有什么不同的?有兩種, IE 盒子模型、W3C 盒子模型;
盒模型: 內(nèi)容(content)、填充(padding)、邊界(margin)、 邊框(border);
標(biāo)準(zhǔn)(W3C)盒模型:元素寬度 = width + padding + border + margin
怪異(IE)盒模型:元素寬度 = width + margin
區(qū) 別: IE 的 content 部分把 border 和 padding 計算了進去;
標(biāo)準(zhǔn)瀏覽器通過設(shè)置 css3 的 box-sizing: border-box 屬性,觸發(fā)“怪異模式”解析計算寬高
CSS 選擇符有哪些?id 選擇器( # myid)
類選擇器(.myclassname)
標(biāo)簽選擇器(div, h1, p)
相鄰選擇器(h1 + p)
子選擇器(ul > li)
后代選擇器(li a)
通配符選擇器( * )
屬性選擇器(a[rel = "external"])
偽類選擇器(a:hover, li:nth-child)
CSS3 新增偽類有那些?p:first-of-type 選擇屬于其父元素的首個
元素的每個
元素。
p:last-of-type 選擇屬于其父元素的最后
元素的每個
元素。
p:only-of-type 選擇屬于其父元素唯一的
元素的每個
元素。
p:only-child 選擇屬于其父元素的唯一子元素的每個
元素。
p:nth-child(2) 選擇屬于其父元素的第二個子元素的每個
元素。
:after 在元素之前添加內(nèi)容,也可以用來做清除浮動。
:before 在元素之后添加內(nèi)容
:enabled 選擇器匹配每個已啟用的元素(大多用在表單元素上)。
:disabled 控制表單控件的禁用狀態(tài)。
:checked 單選框或復(fù)選框被選中
如何居中 div?如何居中一個浮動元素?如何讓絕對定位的 div 居中?如果需要居中的元素為常規(guī)流中 inline 元素,為父元素設(shè)置 text-align: center;即可實現(xiàn)
如果需要居中的元素為常規(guī)流中 block 元素,1)為元素設(shè)置寬度,2)設(shè)置左右 margin 為 auto。3)IE6 下需在父元素上設(shè)置 text-align: center;,再給子元素恢復(fù)需要的值
aaaaaa aaaaaa a a a a a a a a
如果需要居中的元素為浮動元素,1)為元素設(shè)置寬度,2)position: relative;,3)浮動方向偏移量(left 或者 right)設(shè)置為 50%,4)浮動方向上的 margin 設(shè)置為元素寬度一半乘以-1
aaaaaa aaaaaa a a a a a a a a
如果需要居中的元素為絕對定位元素,1)為元素設(shè)置寬度,2)偏移量設(shè)置為 50%,3)偏移方向外邊距設(shè)置為元素寬度一半乘以-1
aaaaaa aaaaaa a a a a a a a a
如果需要居中的元素為絕對定位元素,1)為元素設(shè)置寬度,2)設(shè)置左右偏移量都為 0,3)設(shè)置左右外邊距都為 auto
如何豎直居中一個元素aaaaaa aaaaaa a a a a a a a a
絕對定位居中
如果居中的是行內(nèi)元素,可以設(shè)置父級 height 與 line-height 相等
設(shè)置 margin/padding 居中
相對位置偏移居中
flex 居中 設(shè)置 align-items:center 即可
display 有哪些值?說明他們的作用block 象塊類型元素一樣顯示。
none 缺省值。象行內(nèi)元素類型一樣顯示。
inline-block 象行內(nèi)元素一樣顯示,但其內(nèi)容象塊類型元素一樣顯示。
list-item 象塊類型元素一樣顯示,并添加樣式列表標(biāo)記。
table 此元素會作為塊級表格來顯示
inherit 規(guī)定應(yīng)該從父元素繼承 display 屬性的值
position 有哪些值 relative 和 absolute 定位原點是?absolute 生成絕對定位的元素,相對于值不為 static 的第一個父元素進行定位。
fixed (老 IE 不支持) 生成絕對定位的元素,相對于瀏覽器窗口進行定位。
relative 生成相對定位的元素,相對于其正常位置進行定位。
static 默認(rèn)值。沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right - z-index 聲明)。
inherit 規(guī)定從父元素繼承 position 屬性的值
CSS3 有哪些新特性?新增選擇器 p:nth-child(n){color: rgba(255, 0, 0, 0.75)}
彈性盒模型 display: flex;
多列布局 column-count: 5;
媒體查詢 @media (max-width: 480px) {.box: {column-count: 1;}}
個性化字體 @font-face{font-family: BorderWeb; src:url(BORDERW0.eot);}
顏色透明度 color: rgba(255, 0, 0, 0.75);
圓角 border-radius: 5px;
漸變 background:linear-gradient(red, green, blue);
陰影 box-shadow:3px 3px 3px rgba(0, 64, 128, 0.3);
倒影 box-reflect: below 2px;
文字裝飾 text-stroke-color: red;
文字溢出 text-overflow:ellipsis;
背景效果 background-size: 100px 100px;
邊框效果 border-image:url(bt_blue.png) 0 10;
平滑過渡 transition: all .3s ease-in .1s;
動畫 @keyframes anim-1 {50% {border-radius: 50%;}} animation: anim-1 1s;
轉(zhuǎn)換
旋轉(zhuǎn) transform: rotate(20deg);
傾斜 transform: skew(150deg, -10deg);
位移 transform: translate(20px, 20px);
縮放 transform: scale(.5);
用純 CSS 創(chuàng)建一個三角形的原理是什么?// 把上、左、右三條邊隱藏掉(顏色設(shè)為 transparent) #demo { width: 0; height: 0; border-width: 20px; border-style: solid; border-color: transparent transparent red transparent; }一個滿屏品字布局如何設(shè)計?
簡單的方式:
上面的 div 寬 100%,
下面的兩個 div 分別寬 50%,
然后用 float 或者 inline 使其不換行即可
經(jīng)常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什么,常用 hack 的技巧 ?png24 位的圖片在 iE6 瀏覽器上出現(xiàn)背景,解決方案是做成 PNG8.
瀏覽器默認(rèn)的 margin 和 padding 不同。解決方案是加一個全局的*{margin:0;padding:0;}來統(tǒng)一
IE 下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,也可以使用 getAttribute()獲取自定義屬性;
Firefox 下,只能使用 getAttribute()獲取自定義屬性。解決方法:統(tǒng)一通過 getAttribute()獲取自定義屬性
IE 下,even 對象有 x,y 屬性,但是沒有 pageX,pageY 屬性
Firefox 下,event 對象有 pageX,pageY 屬性,但是沒有 x,y 屬性
li 與 li 之間有看不見的空白間隔是什么原因引起的?有什么解決辦法?(也稱幽靈字符)行框的排列會受到中間空白(回車空格)等的影響,因為空格也屬于字符,這些空白也會被應(yīng)用樣式,占據(jù)空間,所以會有間隔,把字符大小設(shè)為 0,就沒有空格了
display:inline-block 間隙問題怎么解決?(攜程)移除空格、使用 margin 負值、使用 font-size:0、letter-spacing、word-spacing
display:inline-block 什么時候會顯示間隙?相鄰的 inline-block 元素之間有換行或空格分隔的情況下會產(chǎn)生間距
非 inline-block 水平元素設(shè)置為 inline-block 也會有水平間距
可以借助 vertical-align:top; 消除垂直間隙
可以在父級加 font-size:0; 在子元素里設(shè)置需要的字體大小,消除垂直間隙
把 li 標(biāo)簽寫到同一行可以消除垂直間隙,但代碼可讀性差
css 定義的權(quán)重// 以下是權(quán)重的規(guī)則:標(biāo)簽的權(quán)重為1,class的權(quán)重為10,id的權(quán)重為100,以下/// 例子是演示各種定義的權(quán)重值: //權(quán)重為1 div{} //權(quán)重為10 .class1{} //權(quán)重為100 #id1{} //權(quán)重為100+1=101 #id1 div{} //權(quán)重為10+1=11 .class1 div{} //權(quán)重為10+10+1=21 .class1 .class2 div{} // 如果權(quán)重相同,則最后定義的樣式會起作用,但是應(yīng)該避免這種情況出現(xiàn)CSS 優(yōu)先級算法如何計算?
優(yōu)先級就近原則,同權(quán)重情況下樣式定義最近者為準(zhǔn)
載入樣式以最后載入的為準(zhǔn)
優(yōu)先級為: !important > id > class > tag important 比 內(nèi)聯(lián)優(yōu)先級高
談?wù)劯雍颓宄?/b>浮動的框可以向左或向右移動,直到他的外邊緣碰到包含框或另一個浮動框的邊框為止。由于浮動框不在文檔的普通流中,所以文檔的普通流的塊框表現(xiàn)得就像浮動框不存在一樣。浮動的塊框會漂浮在文檔普通流的塊框上
解決方法
父級 div 定義偽類:after 和 zoom (推薦使用,建議定義公共類,以減少 CSS 代碼)
.clearfloat:after{ display:block; clear:both; content:""; visibility:hidden; height:0} .clearfloat{zoom:1}
在結(jié)尾處添加空 div 標(biāo)簽 clear:both
.left {float:left} .clearfloat{clear:both}LeftRight
父級 div 定義 height
父級 div 定義 overflow:auto
父級 div 定義 overflow:hidden
父級 div 也一起浮動
父級 div 定義 display:table
結(jié)尾處加 br 標(biāo)簽 clear:both
參考鏈接幾種常用的清除浮動方法
box-sizing 常用的屬性有哪些?分別有什么作用?box-sizing: content-box; // 默認(rèn)的標(biāo)準(zhǔn)(W3C)盒模型元素效果
box-sizing: border-box; // 觸發(fā)怪異(IE)盒模型元素的效果
box-sizing: inherit; // 繼承父元素 box-sizing 屬性的值
請列舉幾種隱藏元素的方法visibility: hidden; 這個屬性只是簡單的隱藏某個元素,但是元素占用的空間任然存在
opacity: 0; CSS3 屬性,設(shè)置 0 可以使一個元素完全透明
position: absolute; 設(shè)置一個很大的 left 負值定位,使元素定位在可見區(qū)域之外
display: none; 元素會變得不可見,并且不會再占用文檔的空間。
transform: scale(0); 將一個元素設(shè)置為縮放無限小,元素將不可見,元素原來所在的位置將被保留
height: 0; 將元素高度設(shè)為 0 ,并消除邊框
filter: blur(0); CSS3 屬性,將一個元素的模糊度設(shè)置為 0,從而使這個
rgba() 和 opacity 的透明效果有什么不同?opacity 作用于元素以及元素內(nèi)的所有內(nèi)容(包括文字)的透明度
rgba() 只作用于元素自身的顏色或其背景色,子元素不會繼承透明效果
css 屬性 content 有什么作用?content 屬性專門應(yīng)用在 before/after 偽元素上,用于插入額外內(nèi)容或樣式
請解釋一下 CSS3 的 Flexbox(彈性盒布局模型)以及適用場景?Flexbox 用于不同尺寸屏幕中創(chuàng)建可自動擴展和收縮布局
請寫出多種等高布局在列的父元素上使用這個背景圖進行 Y 軸的鋪放,從而實現(xiàn)一種等高列的假像
模仿表格布局等高列效果:兼容性不好,在 ie6-7 無法正常運行
css3 flexbox 布局: .container{display: flex; align-items: stretch;}
圣杯布局的實現(xiàn)原理?要求:三列布局;中間主體內(nèi)容前置,且寬度自適應(yīng);兩邊內(nèi)容定寬
好處:重要的內(nèi)容放在文檔流前面可以優(yōu)先渲染
原理:利用相對定位、浮動、負邊距布局,而不添加額外標(biāo)簽
.container { padding-left: 150px; padding-right: 190px; } .main { float: left; width: 100%; } .left { float: left; width: 190px; margin-left: -100%; position: relative; left: -150px; } .right { float: left; width: 190px; margin-left: -190px; position: relative; right: -190px; }什么是雙飛翼布局?實現(xiàn)原理?
雙飛翼布局:對圣杯布局(使用相對定位,對以后布局有局限性)的改進,消除相對定位布局
原理:主體元素上設(shè)置左右邊距,預(yù)留兩翼位置。左右兩欄使用浮動和負邊距歸位,消除相對定位。
.container { /*padding-left:150px;*/ /*padding-right:190px;*/ } .main-wrap { width: 100%; float: left; } .main { margin-left: 150px; margin-right: 190px; } .left { float: left; width: 150px; margin-left: -100%; /*position: relative;*/ /*left:-150px;*/ } .right { float: left; width: 190px; margin-left: -190px; /*position:relative;*/ /*right:-190px;*/ }在 CSS 樣式中常使用 px、em 在表現(xiàn)上有什么區(qū)別?
px 相對于顯示器屏幕分辨率,無法用瀏覽器字體放大功能
em 值并不是固定的,會繼承父級的字體大?。?em = 像素值 / 父級 font-size
為什么要初始化 CSS 樣式?不同瀏覽器對有些標(biāo)簽樣式的默認(rèn)值解析不同
不初始化 CSS 會造成各現(xiàn)瀏覽器之間的頁面顯示差異
可以使用 reset.css 或 Normalize.css 做 CSS 初始化
reset.css 和 Normalize.css 理解reset.css 意為重置默認(rèn)樣式。HTML 中絕大部分標(biāo)簽元素在網(wǎng)頁顯示中都有一個默認(rèn)屬性值,通常為了避免重復(fù)定義元素樣式,需要進行重置默認(rèn)樣式
Eric Meyer(CSS Reset)推薦
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ""; content: none; } /* remember to define focus styles! */ :focus { outline: 0; } /* remember to highlight inserts somehow! */ ins { text-decoration: none; } del { text-decoration: line-through; } /* tables still need ‘cellspacing=”0″‘ in the markup */ table { border-collapse: collapse; border-spacing: 0; }
Normalize.css 只是一個很小的 css 文件,但它在默認(rèn)的 HTML 元素樣式上提供了跨瀏覽器的高度一致性。相比于傳統(tǒng)的 css reset,Normalize.css 是一種現(xiàn)代的,為 HTML5 準(zhǔn)備的優(yōu)質(zhì)替代方案。
Normalize.css 是一種 CSS reset 的替代方案。經(jīng)過@necolas 和@jon neal 花了幾百個小時來努力研究不同瀏覽器的默認(rèn)樣式的差異,這個項目終于變成了現(xiàn)在這樣。
我們創(chuàng)造 normalize.css 有下幾個目的:
保護有用的瀏覽器默認(rèn)樣式而不是完全去掉它們
一般化的樣式:為大部分 HTML 元素提供
修復(fù)瀏覽器自身的 bug 并保證各瀏覽器的一致性
優(yōu)化 CSS 可用性:用一些小技巧
解釋代碼:用注釋和詳細的文檔來
什么是 FOUC(Flash of Unstyled Content)? 如何來避免 FOUC?當(dāng)使用 @import 導(dǎo)入 CSS 時,會導(dǎo)致某些頁面在 IE 出現(xiàn)奇怪的現(xiàn)象: 沒有樣式的頁面內(nèi)容顯示瞬間閃爍,這種現(xiàn)象稱為“文檔樣式短暫失效”,簡稱為 FOUC
產(chǎn)生原因:當(dāng)樣式表晚于結(jié)構(gòu)性 html 加載時,加載到此樣式表時,頁面將停止之前的渲染。
等待此樣式表被下載和解析后,再重新渲染頁面,期間導(dǎo)致短暫的花屏現(xiàn)象。
解決方法:使用 link 標(biāo)簽將樣式表放在文檔 head
介紹使用過的 CSS 預(yù)處理器?CSS 預(yù)處理器基本思想:為 CSS 增加了一些編程的特性(變量、邏輯判斷、函數(shù)等)
開發(fā)者使用這種語言進行進行 Web 頁面樣式設(shè)計,再編譯成正常的 CSS 文件使用
使用 CSS 預(yù)處理器,可以使 CSS 更加簡潔、適應(yīng)性更強、可讀性更佳,無需考慮兼容性
最常用的 CSS 預(yù)處理器語言包括:Sass(SCSS)和 LESS
CSS 優(yōu)化、提高性能的方法有哪些?多個 css 合并,盡量減少 HTTP 請求
將 css 文件放在頁面最上面
移除空的 css 規(guī)則
避免使用 CSS 表達式
選擇器優(yōu)化嵌套,盡量避免層級過深
充分利用 css 繼承屬性,減少代碼量
抽象提取公共樣式,減少代碼量
屬性值為 0 時,不加單位
屬性值為小于 1 的小數(shù)時,省略小數(shù)點前面的 0
css 雪碧圖
瀏覽器是怎樣解析 CSS 選擇器的?瀏覽器解析 CSS 選擇器的方式是從右到左
在網(wǎng)頁中的應(yīng)該使用奇數(shù)還是偶數(shù)的字體?在網(wǎng)頁中的應(yīng)該使用“偶數(shù)”字體:
偶數(shù)字號相對更容易和 web 設(shè)計的其他部分構(gòu)成比例關(guān)系
使用奇數(shù)號字體時文本段落無法對齊
宋體的中文網(wǎng)頁排布中使用最多的就是 12 和 14
margin 和 padding 分別適合什么場景使用?需要在 border 外側(cè)添加空白,且空白處不需要背景(色)時,使用 margin
需要在 border 內(nèi)測添加空白,且空白處需要背景(色)時,使用 padding
抽離樣式模塊怎么寫,說出思路?CSS 可以拆分成 2 部分:公共 CSS 和 業(yè)務(wù) CSS:
網(wǎng)站的配色,字體,交互提取出為公共 CSS。這部分 CSS 命名不應(yīng)涉及具體的業(yè)務(wù)
對于業(yè)務(wù) CSS,需要有統(tǒng)一的命名,使用公用的前綴??梢詤⒖济嫦?qū)ο蟮?CSS
元素豎向的百分比設(shè)定是相對于容器的高度嗎?元素豎向的百分比設(shè)定是相對于容器的寬度,而不是高度
全屏滾動的原理是什么? 用到了 CSS 的那些屬性?原理類似圖片輪播原理,超出隱藏部分,滾動時顯示
可能用到的 CSS 屬性:overflow:hidden; transform:translate(100%, 100%); display:none;
什么是響應(yīng)式設(shè)計?響應(yīng)式設(shè)計的基本原理是什么?如何兼容低版本的 IE?響應(yīng)式設(shè)計就是網(wǎng)站能夠兼容多個終端,而不是為每個終端做一個特定的版本
基本原理是利用 CSS3 媒體查詢,為不同尺寸的設(shè)備適配不同樣式
對于低版本的 IE,可采用 JS 獲取屏幕寬度,然后通過 resize 方法來實現(xiàn)兼容:
$(window).resize(function () { screenRespond(); }); screenRespond(); function screenRespond(){ var screenWidth = $(window).width(); if(screenWidth <= 1800){ $("body").attr("class", "w1800"); } if(screenWidth <= 1400){ $("body").attr("class", "w1400"); } if(screenWidth > 1800){ $("body").attr("class", ""); } }什么是視差滾動效果,如何給每頁做不同的動畫?
視差滾動是指多層背景以不同的速度移動,形成立體的運動效果,具有非常出色的視覺體驗
一般把網(wǎng)頁解剖為:背景層、內(nèi)容層和懸浮層。當(dāng)滾動鼠標(biāo)滾輪時,各圖層以不同速度移動,形成視差的
實現(xiàn)原理
以 “頁面滾動條” 作為 “視差動畫進度條”
以 “滾輪刻度” 當(dāng)作 “動畫幀度” 去播放動畫的
監(jiān)聽 mousewheel 事件,事件被觸發(fā)即播放動畫,實現(xiàn)“翻頁”效果
a 標(biāo)簽上四個偽類的執(zhí)行順序是怎么樣的?link > visited > hover > active
偽元素和偽類的區(qū)別和作用?偽元素:在內(nèi)容元素的前后插入額外的元素或樣式,但是這些元素實際上并不在文檔中生成。它們只在外部顯示可見,但不會在文檔的源代碼中找到它們,因此,稱為“偽”元素。例如:
p::before {content:"第一章:";} p::after {content:"Hot!";} p::first-line {background:red;} p::first-letter {font-size:30px;}
偽類: 將特殊的效果添加到特定選擇器上。它是已有元素上添加類別的,不會產(chǎn)生新的元素。例如:
a:hover {color: #FF00FF} p:first-child {color: red}::before 和 :after 中雙冒號和單冒號有什么區(qū)別?
在 CSS 中偽類一直用 : 表示,如 :hover, :active 等
偽元素在 CSS1 中已存在,當(dāng)時語法是用 : 表示,如 :before 和 :after
后來在 CSS3 中修訂,偽元素用 :: 表示,如 ::before 和 ::after,以此區(qū)分偽元素和偽類
由于低版本 IE 對雙冒號不兼容,開發(fā)者為了兼容性各瀏覽器,繼續(xù)使使用 :after 這種老語法表示偽元素
綜上所述:::before 是 CSS3 中寫偽元素的新語法; :after 是 CSS1 中存在的、兼容 IE 的老語法
如何修改 Chrome 記住密碼后自動填充表單的黃色背景?產(chǎn)生原因:由于 Chrome 默認(rèn)會給自動填充的 input 表單加上 input:-webkit-autofill 私有屬性造成的
解決方案 1:在 form 標(biāo)簽上直接關(guān)閉了表單的自動填充:autocomplete="off"
解決方案 2:input:-webkit-autofill { background-color: transparent; }
input [type=search] 搜索框右側(cè)小圖標(biāo)如何美化?
input[type="search"]::-webkit-search-cancel-button{ -webkit-appearance: none; height: 15px; width: 15px; border-radius: 8px; background:url("images/searchicon.png") no-repeat 0 0; background-size: 15px 15px; }網(wǎng)站圖片文件,如何點擊下載?而非點擊預(yù)覽?
下載 下載iOS safari 如何阻止“橡皮筋效果”?
$(document).ready(function(){ var stopScrolling = function(event) { event.preventDefault(); } document.addEventListener("touchstart", stopScrolling, false); document.addEventListener("touchmove", stopScrolling, false); });你對 line-height 是如何理解的?
line-height 指一行字的高度,包含了字間距,實際上是下一行基線到上一行基線距離
如果一個標(biāo)簽沒有定義 height 屬性,那么其最終表現(xiàn)的高度是由 line-height 決定的
一個容器沒有設(shè)置高度,那么撐開容器高度的是 line-height 而不是容器內(nèi)的文字內(nèi)容
把 line-height 值設(shè)置為 height 一樣大小的值可以實現(xiàn)單行文字的垂直居中
line-height 和 height 都能撐開一個高度,height 會觸發(fā) haslayout,而 line-height 不會
line-height 三種賦值方式有何區(qū)別?(帶單位、純數(shù)字、百分比)帶單位:px 是固定值,而 em 會參考父元素 font-size 值計算自身的行高
純數(shù)字:會把比例傳遞給后代。例如,父級行高為 1.5,子元素字體為 18px,則子元素行高為 1.5 * 18 = 27px
百分比:將計算后的值傳遞給后代
設(shè)置元素浮動后,該元素的 display 值會如何變化?設(shè)置元素浮動后,該元素的 display 值自動變成 block
怎么讓 Chrome 支持小于 12px 的文字?.shrink{ -webkit-transform:scale(0.8); -o-transform:scale(1); display:inline-block; }讓頁面里的字體變清晰,變細用 CSS 怎么做?(IOS 手機瀏覽器字體齒輪設(shè)置)
-webkit-font-smoothing: antialiased;font-style 屬性 oblique 是什么意思?
font-style: oblique; 使沒有 italic 屬性的文字實現(xiàn)傾斜
如果需要手動寫動畫,你認(rèn)為最小時間間隔是多久?16.7ms 多數(shù)顯示器默認(rèn)頻率是 60Hz,即 1 秒刷新 60 次,所以理論上最小間隔: 1s / 60 * 1000 = 16.7ms
overflow: scroll 時不能平滑滾動的問題怎么處理?監(jiān)聽滾輪事件,然后滾動到一定距離時用 jquery 的 animate 實現(xiàn)平滑效果。
一個高度自適應(yīng)的 div,里面有兩個 div,一個高度 100px,希望另一個填滿剩下的高度方案 1: .sub { height: calc(100%-100px); }
方案 2: .container { position:relative; } .sub { position: absolute; top: 100px; bottom: 0; }
方案 3: .container { display:flex; flex-direction:column; } .sub { flex:1; }
CSS 中類 class 和 id 的區(qū)別對于 CSS 而言,id 和 class 都是選擇器,唯一不同的地方在于權(quán)重不同。如果只說 CSS,上面那一句話就講完了。拓展出來,對于 html 而言,id 和 class 都是 dom 元素的屬性值。不同的地方在于 id 屬性的值是唯一的,而 class 屬性值可以重復(fù)。id 還一個老特性是錨點功能,當(dāng)瀏覽器地址欄有一個#xxx,頁面會自動滾動到 id=xxx 的元素上面。
更直接的:id 給 js 用,class 給 css 用(趨勢)
如何優(yōu)化網(wǎng)頁的打印樣式其中 media 指定的屬性就是設(shè)備,顯示器上就是 screen,打印機則是 print,電視是 tv,投影儀是 projection。
但打印樣式表也應(yīng)有些注意事項:
打印樣式表中最好不要用背景圖片,因為打印機不能打印 CSS 中的背景。如要顯示圖片,請使用 html 插入到頁面中。
最好不要使用像素作為單位,因為打印樣式表要打印出來的會是實物,所以建議使用 pt 和 cm。
隱藏掉不必要的內(nèi)容。(@print div{display:none;})
打印樣式表中最好少用浮動屬性,因為它們會消失。
請問為何要使用 transform 而非 absolute positioning,或反之的理由?為什么?使用 transform 或 position 實現(xiàn)動畫效果時是有很大差別。
使用 transform 時,可以讓 GPU 參與運算,動畫的 FPS 更高。
使用 position 時,最小的動畫變化的單位是 1px,而使用 transform 參與時,可以做到更?。▌赢嬓Ч悠交?/p>
功能都一樣。但是 translate 不會引起瀏覽器的重繪和重排,這就相當(dāng) nice 了。
反之
tranform 改變 fixed 子元素的定位對象
transform 改變元素層疊順序
transform 的副作用
CSS Sprites 其實就是把網(wǎng)頁中一些背景圖片整合到一張圖片文件中,再利用 CSS 的“background-image”,“background- repeat”,“background-position”的組合進行背景定位,background-position 可以用數(shù)字能精確的定位出背景圖片的位置。
CSS Sprites 為一些大型的網(wǎng)站節(jié)約了帶寬,讓提高了用戶的加載速度和用戶體驗,不需要加載更多的圖片。
你熟悉 SVG 樣式的書寫嗎?SVG | 等效的 CSS |
---|---|
fill | background-color 或 color |
fill-opacity | background-color 或 color 設(shè)置 rgba/hsla |
opacity | opacity |
stroke | border-color |
stroke-width | border-thickness |
stroke-opacity | border-color 設(shè)置 rgba |
rx, ry | border-radius |
下面的屬性在 SVG 和 CSS 中是一樣的,只是在 SVG 的 transformations 和 dimensions 中稍有區(qū)別:
font-family, font-size, font-style, font-variant 和 font-weight
width 和 height
scale, rotate, skew
參考鏈接: 基本的 SVG 樣式屬性
如果設(shè)計中使用了非標(biāo)準(zhǔn)的字體,你該如何去實現(xiàn)?用圖片代替
web fonts 在線字庫
@font-face
參考鏈接:如果設(shè)計中使用了非標(biāo)準(zhǔn)的字體,你該如何去實現(xiàn)?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/113982.html
摘要:如果你一個項目寫了一百萬行,那你肯定是參與了一個比較大的項目了。至于真敲了一百萬行低質(zhì)量代碼,聽哥一句話,還是轉(zhuǎn)行吧。 代碼真的是重質(zhì)不重量,質(zhì)量高的代碼,是當(dāng)前代碼界提倡的,當(dāng)然寫出高質(zhì)量的代碼肯定需要一個相當(dāng)高的專業(yè)素養(yǎng),這需要在日常的代碼書寫中逐漸去吸收掌握,誰不是每天都在學(xué)習(xí)呀,目的還不是為了一個,為實現(xiàn)某個功能寫出高質(zhì)量的代碼。 作為程序開發(fā)者,讓我寫一萬行的代碼?!are ...
摘要:如果在學(xué)習(xí)過程中有什么問題可以關(guān)注我公眾號琉憶編程庫給我留言。有興趣可以深入學(xué)習(xí)最后附上學(xué)習(xí)的知識結(jié)構(gòu)圖譜,可以按著下面的這個知識結(jié)構(gòu)圖進行學(xué)習(xí)不一定完整,更多資料,面試題,都可以關(guān)注公眾號琉憶編程庫獲取。 你好,是我——琉憶。PHP程序員面試系列圖書作者。 作為一名PHP開發(fā)者過來人,也是經(jīng)歷了菜鳥到老手的過程,在此給那些想學(xué)PHP的同學(xué)指條路,即使你是轉(zhuǎn)行學(xué)PHP一樣可以學(xué)會PHP...
閱讀 3686·2021-10-11 10:58
閱讀 2268·2021-10-08 10:05
閱讀 2059·2021-09-27 13:34
閱讀 3600·2019-08-30 15:53
閱讀 2747·2019-08-30 14:02
閱讀 3589·2019-08-29 16:55
閱讀 643·2019-08-29 15:41
閱讀 1092·2019-08-29 15:23