vue如何使用媒體查詢實現(xiàn)響應(yīng)式
使用媒體查詢實現(xiàn)響應(yīng)式的兩種方式
前提
依賴:
sass,sass-loader
1.在每個組件中為其使用媒體查詢
這種方法的有點是減少了重寫不同終端同一組件的工作量,缺點是每個組件都要使用媒體查詢,當(dāng)一套頁面組件不同時,需要進(jìn)行組件的顯示與隱藏(display:none!important),在不同終端區(qū)別不大的情況下建議使用這種方法.
例如:
.styleClassName{
width:200px;
@media only screen and (min-width: 1200px) {
width:100px
}
}2.寫n套頁面,在使用這些頁面的組件中進(jìn)行一次媒體查詢
這種方法的優(yōu)點是媒體查詢比較方便,缺點是在多終端相似度較高的情況下,要寫幾套重復(fù)頁面.
因此,此方式適宜在多終端之間差異較大的情況下使用.
示例:
<template> ?? ?<div> ?? ??? ?<div class="pc"> ?? ??? ??? ?<!-- pc端頁面--> ?? ??? ?</div> ?? ??? ?<div class="pad"> ?? ??? ??? ?<!-- pad端頁面--> ?? ??? ?</div> ?? ??? ?<div class="mobile"> ?? ??? ??? ?<!-- 移動端頁面--> ?? ??? ?</div> ?? ?</div> </template>
<style lang="scss" scoped>
//pc端
@media only screen and (min-width: 1200px) {
? .pc {
? ? display: block !important;
? }
? .pad {
? ? display: none !important;
? ? touch-action: auto !important;
? }
? .mobile {
? ? display: none !important;
? ? touch-action: auto !important;
? }
}
//pad端
@media only screen and (min-width: 768px) and(max-width: 1199px) {
? .pc {
? ? display: none !important;
? }
? .mobile {
? ? display: none !important;
? ? touch-action: auto !important;
? }
? .pad {
? ? display: block !important;
? ? touch-action: auto !important;
? }
}
// 手機端
@media only screen and (max-width: 767px) {
? .pc {
? ? display: none !important;
? }
? .mobile {
? ? display: block !important;
? ? touch-action: auto !important;
? }
? .pad {
? ? display: none !important;
? ? touch-action: auto !important;
? }
}
</style>vue中的媒體查詢
先說一下 css3 中的媒體查詢
媒體查詢 (英文:Media queries ),這個特性非常的實用,尤其是需要根據(jù)設(shè)備的類型或者根據(jù)特定的特征和設(shè)備參數(shù),來修改網(wǎng)站中的CSS樣式。
語法
@media mediatype and|not|only (media feature) {
? ? CSS-Code;
}組成:
一個可選的媒體類型,告訴瀏覽器這段代碼是用在什么類型的媒體上的,具體的媒體類型如下:
all:適用于所有設(shè)備(如果不寫默認(rèn)為all)。print:適用于在打印預(yù)覽模式下在屏幕上查看的分頁材料和文檔。screen:主要用于屏幕。speech:主要用于語音合成器。.
一個或者多個媒體特性表達(dá)式,是一個被包含的CSS生效所需的規(guī)則或者測試,媒體特性數(shù)量眾多,主要的有如下這么幾個:
aspect-ratio:用于檢測視口的寬高比width:用于檢測視口的寬度,可以使用前綴min-width和max-width分別查詢最小值和最大值height:用于檢測視口的高度,可以使用前綴min-height和max-height分別查詢最小值和最大值orientation:用于檢測視口的屏幕方向hover:根據(jù)用戶當(dāng)前的環(huán)境是否允許懸停在元素之上來應(yīng)用不同的樣式(例如電腦就可以進(jìn)行懸懸停,觸摸屏用戶就無法進(jìn)行懸停)
一組CSS規(guī)則,會在測試通過且媒體類型正確的時候應(yīng)用。
下面是一般情況下通過寬度區(qū)分媒體途徑的方法
//當(dāng)屏幕最小寬度為992px?
@media screen and (min-width : 992px) {
? ? body {
? ? ? ? 屬性: 值
? ? }
}
//當(dāng)屏幕寬度 最小為768px 最大為991px時?
@media screen and (min-width:768px) and (max-width:991px) {
? ? body {
? ? ? ?屬性: 值
? ? }
}
//當(dāng)屏幕最大寬度為767px?
@media screen and (max-width:767px) {
? ? body {
? ? ? ?屬性: 值?
? ? }
}vue 與 css3 中的 媒體查詢有點不同
在vue中是不能直接使用@media的,我們必須結(jié)合less或者sass來使用它
安裝命令
npm install sass-loader node-sass --save-dev
npm install less less-loader --save-dev
可能遇到的問題
lass 或者 sass 版本過高,可以適當(dāng)降低版本,對應(yīng) vue 與 腳手架的版本
使用
方法一:
body{
?? ?background-color:red;
?? ?@media only screen and (max-width: 800px) {
? ? background-color:green;
? }
}方法二
寫n套頁面,在使用這些頁面的組件中進(jìn)行一次媒體查詢
但是需要引入
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue watch普通監(jiān)聽和深度監(jiān)聽實例詳解(數(shù)組和對象)
這篇文章主要介紹了vue watch普通監(jiān)聽和深度監(jiān)聽(數(shù)組和對象),文中單獨通過代碼給大家介紹了vue watch 深度監(jiān)聽的方法,感興趣的朋友一起看看吧2018-08-08

