經常為不同分辨率設備或不同窗口大小下布局錯位而頭疼,可以利用@media screen實現網頁布局的自適應,但是怎樣兼容所有主流設備就成了問題。到底分辨率是多少的時候設置呢?
先看下面的代碼,這是從bootstrap中遍歷出來的,min-width來確認分別是
768、992、1200。當然了過去也有些設備寬度是600 480的,哪些小分辨率的我們都歸類為小於767的。為什麼是小於767而不是768呢,那是因為在css中@media (min-width: 768px)表示最小是768也就是>=768,這裡有等於,所以我們判斷更小的設備用@media (max-width: 767px)這邊表示<=767就不會有沖突了
從上面我們可以看出有幾個臨界點的分辨率,那麼我們就可以輕松的來寫自己的自適應代碼了
@media (min-width: 768px){ //>=768的設備 }
@media (min-width: 992px){ //>=992的設備 }
@media (min-width: 1200){ //>=1200的設備 }
注意下順序,如果你把@media (min-width: 768px)寫在了下面那麼很悲劇,
@media (min-width: 1200){ //>=1200的設備 }
@media (min-width: 992px){ //>=992的設備 }
@media (min-width: 768px){ //>=768的設備 }
因為如果是1440,由於1440>768那麼你的1200就會失效。
所以我們用min-width時,小的放上面大的在下面,同理如果是用max-width那麼就是大的在上面,小的在下面
@media (max-width: 1199){ //<=1199的設備 }
@media (max-width: 991px){ //<=991的設備 }
@media (max-width: 767px){ //<=768的設備 }
經過了上面的入門學習,我們就可以靈活的來點高級的混合應用了
@media screen and (min-width:1200px){ #page{ width: 1100px; }#content,.div1{width: 730px;}#secondary{width:310px} }
@media screen and (min-width: 960px) and (max-width: 1199px) { #page{ width: 960px; }#content,.div1{width: 650px;}#secondary{width:250px}select{max-width:200px} }
@media screen and (min-width: 768px) and (max-width: 959px) { #page{ width: 900px; }#content,.div1{width: 620px;}#secondary{width:220px}select{max-width:180px} }
@media only screen and (min-width: 480px) and (max-width: 767px){ #page{ width: 450px; }#content,.div1{width: 420px;position: relative; }#secondary{display:none}#access{width: 450px; }#access a {padding-right:5px}#access a img{display:none}#rss{display:none}#branding #s{display:none} }
@media only screen and (max-width: 479px) { #page{ width: 300px; }#content,.div1{width: 300px;}#secondary{display:none}#access{width: 330px;} #access a {padding-right:10px;padding-left:10px}#access a img{display:none}#rss{display:none}#branding #s{display:none}#access ul ul a{width:100px} }
上面的代碼中用到了 screen這裡指定了顯示器為顯示設備,也可以是print打印機等其他設備,一般我們用screen。或者干脆省略。如果想看詳細的關於media的說明可以百度一下關於media query的知識