用media screen做響應式布局,為何斷點設為800px時chrome會在783px就變化?
就是臨界點max-width設為800px時背景變綠,結果在chrome調試窗口的div盒模型寬度為784px時候背景就變綠了,怎麼回事?
代碼&
&&&&&&&&
謝邀,這個不是@media的bug, 而是Chrome 和 Safari 計算你的max-width的800px其實是 (780px body + 20px scrollbar),也就是說滾動條有20像素,其實精確一點應該是780不是783。
Firefox, Opera 和 IE就不計算20的滾動條寬度。如果你要解決這個問題,讓不同瀏覽器的滾動條寬度計算準確,請加入body { overflow-y: scroll; }.由於瀏覽器版本,滾動條寬度會在15px,17px,20px,但是你設計過程中建議按照20px的標準去計算,這樣能避免不同瀏覽器不同版本的寬度誤差,下面是一些版本對應的滾動條寬度參考:
我測試過現在最新的chrome,safari,firefox的mac版本滾動條經過精確測算是15px,windows版本下的未檢測,感興趣可以自己去測試下.想更深入的學習css 的盒模型,不錯過任何一個編碼中的細節,請參看W3C的官方標準資料:CSS basic box model測試你不同的操作系統的不同瀏覽器滾動條,直接點開網址即可測試:http://www.textfixer.com/tutorials/scrollbar-pixel-width-test.php瀉藥因為是針對視口的設置所以你得把滾動條寬度加進去……
瀉藥題主理解有誤,下面一步步的來解釋。先說@media的語法,參考@media - CSS
@media &
&
}
A &
type 在顯示器上取 screen 沒錯。
features 取 width 也沒錯。但是width前面加上min/max的前綴理解有錯,參考width - CSS | MDN/* Exact width */
@media (width: 300px) {}
/* Viewport width at least */
@media (min-width: 50em) {}
/* Viewport width at most */
@media (max-width: 1000px) {}
換言之,就是當viewport的width小於等於時,就會觸發其下的內容。
贊同 @Chuckie Chang的回答,chrome把滾動條的width也算在媒體查詢里。你把chrome調試工具換成右列顯示,就會發現800px時媒體查詢生效了
meta沒加上
瀉藥~ 不太懂,老闆要求一般都是用JS判斷用戶是哪個尺寸的屏幕,然後直接替換相應的session["css"]文件這樣來做。前台輸出?css=session["css"]。我們不太害怕效率耗損~ 因為who care ~ 至於對於某個尺寸寬高的CSS代碼的編寫我們不參與~
推薦閱讀:
※如何評價耗子在segmentfault的《web 安全之 xss 漏洞攻擊》live?
※找一個初級的前端開發應該掌握哪些知識點?需要熟練到什麼程度?
※grunt 怎樣合併 html ?
※從語義化的角度,<li> 標籤中的內容應該使用 <p> 標籤嗎?
※JS 基礎尚可,要深入學習,哪裡有練手的小項目?希望可以具體點,例如[名稱:小聊天室 功能有:聊天、查看…]
TAG:前端開發 | CSS | HTML5 | 前端工程師 | 響應式設計Responsivewebdesign |