摘要:避免在頁(yè)面的主體布局中使用,要等其中的內(nèi)容完全下載之后才會(huì)顯示出來(lái),顯示比布局慢。實(shí)現(xiàn)多行文本溢出顯示效果實(shí)現(xiàn)方法適用范圍因使用了的擴(kuò)展屬性,該方法適用于瀏覽器及移動(dòng)端
在過(guò)去的一年很多人不滿于公司沒(méi)有福利、人際關(guān)系不好相處、沒(méi)有發(fā)展前途的境遇等等,想著在開年來(lái)?yè)Q一份工作來(lái)重新開始自己,那么 你 準(zhǔn)備好了嗎?
下面是本人整理的一份面試材料,本想自己用的,但是新年第一天 公司突然給了我個(gè)驚喜,漲工資了?。。?/p> 1、 viewport
// width 設(shè)置viewport寬度,為一個(gè)正整數(shù),或字符串‘device-width’ // device-width 設(shè)備寬度 // height 設(shè)置viewport高度,一般設(shè)置了寬度,會(huì)自動(dòng)解析出高度,可以不用設(shè)置 // initial-scale 默認(rèn)縮放比例(初始縮放比例),為一個(gè)數(shù)字,可以帶小數(shù) // minimum-scale 允許用戶最小縮放比例,為一個(gè)數(shù)字,可以帶小數(shù) // maximum-scale 允許用戶最大縮放比例,為一個(gè)數(shù)字,可以帶小數(shù) // user-scalable 是否允許手動(dòng)縮放
延伸 提問(wèn)
怎樣處理 移動(dòng)端 1px 被 渲染成 2px 問(wèn)題
1 局部處理 meta標(biāo)簽中的 viewport屬性 ,initial-scale 設(shè)置為 1 rem 按照設(shè)計(jì)稿標(biāo)準(zhǔn)走,外加利用transfrome 的scale(0.5) 縮小一倍即可; 2 全局處理 meta標(biāo)簽中的 viewport屬性 ,initial-scale 設(shè)置為 0.5 rem 按照設(shè)計(jì)稿標(biāo)準(zhǔn)走即可2、跨域的幾種方式
首先了解下瀏覽器的同源策略
同源策略/SOP(Same origin policy)是一種約定,由Netscape公司1995年引入瀏覽器,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到XSS、CSRF等攻擊。所謂同源是指"協(xié)議+域名+端口"三者相同,即便兩個(gè)不同的域名指向同一個(gè)ip地址,也非同源。
那么怎樣解決跨域問(wèn)題的呢?
1 通過(guò)jsonp跨域 1.)原生實(shí)現(xiàn): 2、 document.domain + iframe跨域 此方案僅限主域相同,子域不同的跨域應(yīng)用場(chǎng)景。 1.)父窗口:(http://www.domain.com/a.html) 2.)子窗口:(http://child.domain.com/b.html) 弊端:請(qǐng)看下面渲染加載優(yōu)化 3、 nginx代理跨域 4、 nodejs中間件代理跨域 5、 后端在頭部信息里面設(shè)置安全域名 更多跨域的具體內(nèi)容請(qǐng)看 https://segmentfault.com/a/11900000111453643、 渲染優(yōu)化
1.禁止使用iframe(阻塞父文檔onload事件); *iframe會(huì)阻塞主頁(yè)面的Onload事件; *搜索引擎的檢索程序無(wú)法解讀這種頁(yè)面,不利于SEO; *iframe和主頁(yè)面共享連接池,而瀏覽器對(duì)相同域的連接有限制,所以會(huì)影響頁(yè)面的并行加載。 使用iframe之前需要考慮這兩個(gè)缺點(diǎn)。如果需要使用iframe,最好是通過(guò)javascript 動(dòng)態(tài)給iframe添加src屬性值,這樣可以繞開以上兩個(gè)問(wèn)題。 2.禁止使用gif圖片實(shí)現(xiàn)loading效果(降低CPU消耗,提升渲染性能); 3、使用CSS3代碼代替JS動(dòng)畫(盡可能避免重繪重排以及回流); 4、對(duì)于一些小圖標(biāo),可以使用base64位編碼,以減少網(wǎng)絡(luò)請(qǐng)求。但不建議大圖使用,比較耗費(fèi)CPU; 小圖標(biāo)優(yōu)勢(shì)在于: 1.減少HTTP請(qǐng)求; 2.避免文件跨域; 3.修改及時(shí)生效; 5、頁(yè)面頭部的 會(huì)阻塞頁(yè)面;(因?yàn)?Renderer進(jìn)程中 JS線程和渲染線程是互斥的); 6、頁(yè)面頭部首先: 當(dāng)return 的值 小于 0 ,那么 a 會(huì)被排列到 b 之前; 等于 0 , a 和 b 的相對(duì)位置不變; 大于 0 , b 會(huì)被排列到 a 之前; 這里你會(huì) 發(fā)現(xiàn)起始 的時(shí)候數(shù)組是正序排列,每當(dāng)進(jìn)行一次排列的時(shí)候, 都會(huì)先隨機(jī)一個(gè)隨機(jī)數(shù) (注意這里的每一次排列 指 每一個(gè)紅框指一次排列, 共9次排列 , 一次排列中可能存在多次比較); 當(dāng)一次排列的 隨機(jī)數(shù)大于0.5 時(shí) 將會(huì)進(jìn)行第二次比較, 當(dāng)?shù)诙坞S機(jī)數(shù) 仍然大于0.5 時(shí) , 將會(huì)再 進(jìn)行一次比較, 直到 隨機(jī)數(shù)大于0.5 或者排列到第一位; 當(dāng)一次排列的 隨機(jī)數(shù) 小于0.5時(shí) 當(dāng)前比較的兩項(xiàng) 索引將不會(huì)改變 ,繼續(xù)下一次 的排列;8、字體font-family@ 宋體 SimSun @ 黑體 SimHei @ 微信雅黑 Microsoft Yahei @ 微軟正黑體 Microsoft JhengHei @ 新宋體 NSimSun @ 新細(xì)明體 MingLiU @ 細(xì)明體 MingLiU @ 標(biāo)楷體 DFKai-SB @ 仿宋 FangSong @ 楷體 KaiTi @ 仿宋_GB2312 FangSong_GB2312 @ 楷體_GB2312 KaiTi_GB2312 @ @ 說(shuō)明:中文字體多數(shù)使用宋體、雅黑,英文用Helvetica body { font-family: Microsoft Yahei,SimSun,Helvetica; }9、可能用到的meta標(biāo)簽其他meta標(biāo)簽10、消除transition閃屏.css { -webkit-transform-style: preserve-3d; -webkit-backface-visibility: hidden; -webkit-perspective: 1000; } 過(guò)渡動(dòng)畫(在沒(méi)有啟動(dòng)硬件加速的情況下)會(huì)出現(xiàn)抖動(dòng)的現(xiàn)象, 以上的 解決方案只是改變 視角 來(lái)啟動(dòng)硬件加速的一種方式; 啟動(dòng)硬件加速的 另外一種方式: .css { -webkit-transform: translate3d(0,0,0); -moz-transform: translate3d(0,0,0); -ms-transform: translate3d(0,0,0); transform: translate3d(0,0,0); } 啟動(dòng)硬件加速 最常用的方式:translate3d、translateZ、transform opacity屬性/過(guò)渡動(dòng)畫(需要?jiǎng)赢媹?zhí)行的過(guò)程中才會(huì)創(chuàng)建合成層,動(dòng)畫沒(méi)有開始或結(jié)束后元素還會(huì)回到之前的狀態(tài)) will-chang屬性(這個(gè)比較偏僻),一般配合opacity與translate使用(而且經(jīng)測(cè)試,除了上述可以引發(fā)硬件加速的屬性外, 其它屬性并不會(huì)變成復(fù)合層), 弊端: 硬件加速會(huì)導(dǎo)致 CPU性能占用量過(guò)大,電池電量消耗加大 ;因此 盡量避免泛濫使用硬件加速。11、android 4.x bug1.三星 Galaxy S4中自帶瀏覽器不支持border-radius縮寫 2.同時(shí)設(shè)置border-radius和背景色的時(shí)候,背景色會(huì)溢出到圓角以外部分 3.部分手機(jī)(如三星),a鏈接支持鼠標(biāo):visited事件,也就是說(shuō)鏈接訪問(wèn)后文字變?yōu)樽仙? 4.android無(wú)法同時(shí)播放多音頻audio 5.oppo 的border-radius 會(huì)失效12、JS 判斷設(shè)備來(lái)源function deviceType(){ var ua = navigator.userAgent; var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; for(var i=0; i13、audio元素和video元素在ios和andriod中無(wú)法自動(dòng)播放0){ break; } } } deviceType(); window.addEventListener("resize", function(){ deviceType(); }) 微信的 有些不太一樣 function isWeixin(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger"){ return true; }else{ return false; } } 原因: 因?yàn)楦鞔鬄g覽器都為了節(jié)省流量,做出了優(yōu)化,在用戶沒(méi)有行為動(dòng)作時(shí)(交互)不予許自動(dòng)播放; /音頻,寫法一 //音頻,寫法二 //JS綁定自動(dòng)播放(操作window時(shí),播放音樂(lè)) $(window).one("touchstart", function(){ music.play(); }) //微信下兼容處理 document.addEventListener("WeixinJSBridgeReady", function () { music.play(); }, false); //小結(jié) //1.audio元素的autoplay屬性在IOS及Android上無(wú)法使用,在PC端正常; //2.audio元素沒(méi)有設(shè)置controls時(shí),在IOS及Android會(huì)占據(jù)空間大小,而在PC端Chrome是不會(huì)占據(jù)任何空間; //3.注意不要遺漏微信的兼容處理需要引用微信JS;14、css實(shí)現(xiàn)單行文本溢出顯示 ...直接上效果:相對(duì)于多行文本溢出做處理, 單行要簡(jiǎn)單多,且更容易理解。
實(shí)現(xiàn)方法
overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 當(dāng)然還需要加寬度width屬來(lái)兼容部分瀏覽。15、實(shí)現(xiàn)多行文本溢出顯示...效果:
實(shí)現(xiàn)方法:
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;適用范圍:
因使用了WebKit的CSS擴(kuò)展屬性,該方法適用于WebKit瀏覽器及移動(dòng)端;
注:
1、-webkit-line-clamp用來(lái)限制在一個(gè)塊元素顯示的文本的行數(shù)。 為了實(shí)現(xiàn)該效果,它需要組合其他的WebKit屬性。常見結(jié)合屬性: 2、display: -webkit-box; 必須結(jié)合的屬性 ,將對(duì)象作為彈性伸縮盒子模型顯示 。 3、-webkit-box-orient 必須結(jié)合的屬性 ,設(shè)置或檢索伸縮盒對(duì)象的子元素的排列方式 。如果你覺(jué)著這樣還不夠美觀, 那么就接著往下看:
效果:
這樣 是不是你想要的呢?
實(shí)現(xiàn)方法:
div { position: relative; line-height: 20px; max-height: 40px; overflow: hidden; } div:after { content: "..."; position: absolute; bottom: 0; right: 0; padding-left: 40px; background: -webkit-linear-gradient(left, transparent, #fff 55%); background: -o-linear-gradient(right, transparent, #fff 55%); background: -moz-linear-gradient(right, transparent, #fff 55%); background: linear-gradient(to right, transparent, #fff 55%); } 不要只顧著吃,要注意胃口,此方法有個(gè)弊端 那就是 【未超出行的情況下也會(huì)出現(xiàn)省略號(hào)】 ,這樣會(huì)不會(huì)很挫!??! 沒(méi)辦法,只能結(jié)合JS 進(jìn)行優(yōu)化該方法了。注:
1、將height設(shè)置為line-height的整數(shù)倍,防止超出的文字露出。 2、給p::after添加漸變背景可避免文字只顯示一半。 3、由于ie6-7不顯示content內(nèi)容,所以要添加標(biāo)簽兼容ie6-7(如:…);兼容ie8需要將::after替換成:after。
16、讓圖文不可復(fù)制這點(diǎn)應(yīng)該大家 都很熟悉了, 某些時(shí)候【你懂的】為了快捷搜索答案,可是打死也不讓你復(fù)制
-webkit-user-select: none; -ms-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none;那有些網(wǎng)頁(yè)為了尊重原創(chuàng),復(fù)制的文本 都會(huì)被加上一段來(lái)源說(shuō)明,是如何做到的呢?問(wèn)的好! 等的就是你這個(gè)問(wèn)題 -_- 。
大致思路:
1、答案區(qū)域監(jiān)聽copy事件,并阻止這個(gè)事件的默認(rèn)行為。 2、獲取選中的內(nèi)容(window.getSelection())加上版權(quán)信息,然后設(shè)置到剪切板(clipboarddata.setData())。17、盒子垂直水平居中這個(gè)問(wèn)題好像面試必問(wèn)的吔!反正我是必問(wèn)的,哈哈?。?! 其實(shí)無(wú)關(guān)多少種實(shí)現(xiàn)思路,只要你能實(shí)現(xiàn)就可以!
提供4種方法
1、定位 盒子寬高已知, position: absolute; left: 50%; top: 50%; margin-left:-自身一半寬度; margin-top: -自身一半高度; 2、table-cell布局 父級(jí) display: table-cell; vertical-align: middle; 子級(jí) margin: 0 auto; 3、定位 + transform ; 適用于 子盒子 寬高不定時(shí); (這里是本人常用方法) position: relative / absolute; /*top和left偏移各為50%*/ top: 50%; left: 50%; /*translate(-50%,-50%) 偏移自身的寬和高的-50%*/ transform: translate(-50%, -50%); 注意這里啟動(dòng)了3D硬件加速哦 會(huì)增加耗電量的 (至于何是3D加速 請(qǐng)看瀏覽器進(jìn)程與線程篇) 4、flex 布局 父級(jí): /*flex 布局*/ display: flex; /*實(shí)現(xiàn)垂直居中*/ align-items: center; /*實(shí)現(xiàn)水平居中*/ justify-content: center; 再加一種水平方向上居中 :margin-left : 50% ; transform: translateX(-50%);18、改變placeholder的字體顏色大小其實(shí)這個(gè)方法也就在PC端可以,真機(jī)上屁用都沒(méi)有,當(dāng)時(shí)我就哭了。 但 還是貼出來(lái)吧
input::-webkit-input-placeholder { /* WebKit browsers */ font-size:14px; color: #333; } input::-moz-placeholder { /* Mozilla Firefox 19+ */ font-size:14px; color: #333; } input:-ms-input-placeholder { /* Internet Explorer 10+ */ font-size:14px; color: #333; }19、最快捷的數(shù)組求最大值var arr = [ 1,5,1,7,5,9]; Math.max(...arr) // 920、更短的數(shù)組去重寫法[...new Set([2,"12",2,12,1,2,1,6,12,13,6])] // [2, "12", 12, 1, 6, 13]21、 vue 父子組件嵌套時(shí),組件內(nèi)部的各個(gè)生命周期鉤子觸發(fā)先后順序首先 我們可以把 子組件當(dāng)做function函數(shù)來(lái)看待,當(dāng)父組件 import 子組件的時(shí)候, 就當(dāng)是聲明了 并加載了這個(gè)函數(shù),
在調(diào)用的時(shí)候才會(huì)去執(zhí)行這個(gè)函數(shù)(子組件)。那么父子組件中的各個(gè)聲明周期鉤子觸發(fā)的先后順序是怎樣的呢?
如下圖:下圖帶222 的 是為子組件,所以一次順序是為 先創(chuàng)建父組件,然后才穿件子組件,當(dāng)子組件創(chuàng)建完成并且實(shí)體dom掛載完成后父組件才掛載完成
注:資源來(lái)源于自己長(zhǎng)期收集整理而來(lái),如有和其他網(wǎng)站和論壇相同部分,在此抱歉!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107589.html
摘要:避免在頁(yè)面的主體布局中使用,要等其中的內(nèi)容完全下載之后才會(huì)顯示出來(lái),顯示比布局慢。實(shí)現(xiàn)多行文本溢出顯示效果實(shí)現(xiàn)方法適用范圍因使用了的擴(kuò)展屬性,該方法適用于瀏覽器及移動(dòng)端 在過(guò)去的一年很多人不滿于公司沒(méi)有福利、人際關(guān)系不好相處、沒(méi)有發(fā)展前途的境遇等等,想著在開年來(lái)?yè)Q一份工作來(lái)重新開始自己,那么 你 準(zhǔn)備好了嗎? 下面是本人整理的一份面試材料,本想自己用的,但是新年第一天 公司突然給了我個(gè)...
摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...
摘要:我的書簽我的書簽謹(jǐn)慎導(dǎo)入,小心覆蓋工具類版本管理快速切換源配置教程指南可視化工具前端工具集前端助手網(wǎng)絡(luò)封包截取工具格式化工具標(biāo)注工具模擬請(qǐng)求類深入淺出布局你所不知道的動(dòng)畫技巧與細(xì)節(jié)常用代碼黑魔法小技巧,讓你少寫不必要的,代碼更優(yōu)雅一勞永 我的書簽 我的書簽(謹(jǐn)慎導(dǎo)入,小心覆蓋) 工具類 nvm: node版本管理 nrm: 快速切換npm源 shell: zsh+on-my-zsh配...
摘要:我的書簽我的書簽謹(jǐn)慎導(dǎo)入,小心覆蓋工具類版本管理快速切換源配置教程指南可視化工具前端工具集前端助手網(wǎng)絡(luò)封包截取工具格式化工具標(biāo)注工具模擬請(qǐng)求類深入淺出布局你所不知道的動(dòng)畫技巧與細(xì)節(jié)常用代碼黑魔法小技巧,讓你少寫不必要的,代碼更優(yōu)雅一勞永 我的書簽 我的書簽(謹(jǐn)慎導(dǎo)入,小心覆蓋) 工具類 nvm: node版本管理 nrm: 快速切換npm源 shell: zsh+on-my-zsh配...
閱讀 1974·2021-09-04 16:45
閱讀 764·2019-08-30 15:44
閱讀 905·2019-08-30 13:07
閱讀 468·2019-08-29 16:06
閱讀 1391·2019-08-29 13:43
閱讀 1286·2019-08-26 17:00
閱讀 1533·2019-08-26 13:51
閱讀 2305·2019-08-26 11:48