2019.3.25筆記

柒國招發表於2019-03-26
.item {flex: 1;}
.item {
    flex-grow: 1;//規定專案相對於其他靈活的專案進行擴充套件的量。預設值是 0。
    flex-shrink: 1;//與flex-grow相反
    flex-basis: 0%;//規定靈活專案的初始寬度。
}
複製程式碼

sass stylus less www.oschina.net/question/12…

路由: 有index.js檔案時:寫法和官網不一樣 需要在main.js中

import router from './router'  //匯入index.js  
複製程式碼
 path: '/goods',
 components: require('../components/goods/goods.vue')
 //key為components,否則報錯:templete or render function is not defined
複製程式碼

vue-resource 網路請求模組,用於依賴後端伺服器的vuejs專案進行對伺服器端資料的請求或跨域請求。

裝置畫素比window.devicePixelRatio是裝置上物理畫素和裝置獨立畫素(device-independent pixels (dips))的比例。 公式表示就是:window.devicePixelRatio = 物理畫素 / dips

例如:所有非視網膜螢幕的iphone在垂直的時候,寬度為320物理畫素。當你使用的時候,會設定視窗佈局寬度(不同於視覺區域寬度,不放大顯示情況下,兩者大小一致,為320px, 於是,頁面很自然地覆蓋在螢幕上。這樣,非視網膜螢幕的iphone上,螢幕物理畫素320畫素,獨立畫素也是320畫素,因此,window.devicePixelRatio等於1.

移動端1px正確實現:

@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)
  .border-1px
     &::after
         -webkit-transform: scaleY(0.7)
         transform: scaleY(0.7)

@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2)
  .border-1px
     &::after
         -webkit-transform: scaleY(0.5)
         transform: scaleY(0.5)
         //根據device-pixel-ratio對縱軸縮放
複製程式碼
border-1px($color)
  position: relative
  &:after
    display: block
    position: absolute
    left: 0
    bottom: 0
    width: 100%
    border-top: 1px solid $color
    content: ' '
複製程式碼
background-size: contain;
複製程式碼

把影像影像擴充套件至最大尺寸,以使其寬度和高度完全適應內容區域。

background-size:80px 60px;//如果只給一個值,第二個值為auto
複製程式碼

z-index 屬性設定元素的堆疊順序。擁有更高堆疊順序的元素總是會處於堆疊順序較低的元素的前面。

元素可擁有負的 z-index 屬性值。

Z-index 僅能在定位元素上奏效(例如 position:absolute;)!

圖片只限定寬或高一個即可

absolute:相對於 static 定位以外的第一個 父元素 進行定位。

fixed:相對於瀏覽器視窗進行定位 (彈窗) top: 0; right: 0; bottom: 0; left: 0;

-ms-transform:rotate(7deg); 	/* IE 9 */
-moz-transform:rotate(7deg); 	/* Moz Firefox */ 核心:Gecko 該摳
-webkit-transform:rotate(7deg); /* Safari 和 Chrome */
-o-transform:rotate(7deg); 	/* Opera */
複製程式碼

Web頁面上呼叫js檔案時則不受是否跨域的影響(不僅如此,我們還發現凡是擁有"src"這個屬性的標籤都擁有跨域的能力 非正式傳輸協議,人們把它稱作JSONP,該協議的一個要點就是允許使用者傳遞一個callback引數給服務端, 然後服務端返回資料時會將這個callback引數作為函式名來包裹住JSON資料, 這樣客戶端就可以隨意定製自己的函式來自動處理返回資料了。

encodeURI("http://www.cnblogs.com/season-huang/some other thing");
編碼後會變為
"http://www.cnblogs.com/season-huang/some%20other%20thing";
複製程式碼

其中,空格被編碼成了%20。但是如果你用了encodeURIComponent,那麼結果變為

"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing" 看到了區別嗎,連 "/" 都被編碼了,

background-repeat: no-repeat//背景影像將僅顯示一次。

position:absolute//生成絕對定位的元素,相對於 static 定位以外的第一個父元素進行定位。

vertical-align: top//使兄弟元素與該元素頂端對齊

超出用...顯示

     white-space: nowrap
     overflow: hidden
     text-overflow: ellipsis
複製程式碼

span為行內元素,設定寬高無效

兩個span縫隙去除: 父元素font-size:0 或span標籤連在一起

濾鏡:filter: blur(10px) //blur產生模糊效果

margin: -64px auto 0 auto; //水平居中

sticky-footer: 如果頁面內容不夠長的時候,頁尾塊貼上在視窗底部;如果內容足夠長時,頁尾塊會被內容向下推送。

  import star from '../star/star.vue'
export default {
props: {//props屬性:
  seller: {
      type: Object
  }
},
data() {//data是方法()不是屬性
  return {
    detailShow: false
  };
},
methods: {//methods屬性:      注意s
  showDetail() {
    this.detailShow = true;
  }
},
created() {//created鉤子函式()
},
components:{//components屬性:
},
}
複製程式碼

線條

border-bottom: 1px solid rgba(255,255,255,0.2);
複製程式碼

Vue2.0中tansition動畫過渡

<transition name="fade"></.>包裹
複製程式碼

只會把過渡效果應用到其包裹的內容上,而不會額外渲染 DOM 元素,也不會出現在檢測過的元件層級中。 栗子:

      background: rgba(7,17,27,0.8)
      opacity: 1
      &.fade-enter-active,&.fade-leave-active
        transition: all 0.5s
      &.fade-enter,&.fade-leave-to
        opacity: 0
        background: rgba(7,17,27,0)
複製程式碼

display:table-cell

  1. 不要與float:left; position:absolute; 一起使用
  2. 可以實現大小不固定元素的垂直居中
  3. margin設定無效,響應padding設定
  4. 對高度和寬度高度敏感
  5. 不要對display:table-cell使用百分比設定寬度和高度
     .icon
          display: inline-block
          vertical-align: top
          &.decrease // :class="classMap[item.type]繫結的類名樣式
            bg-image('decrease_3')
          &.discount
            bg-image('discount_3')
          &.guarantee
            bg-image('guarantee_3')
          &.invoice
            bg-image('invoice_3')
          &.special
            bg-image('special_3')
複製程式碼
    .food-item
      display: flex
      margin: 18px
      padding-bottom: 18px
      border-1px(rgba(7,17,27,0.1))
      &:last-child
        border-none()
        margin-bottom: o
複製程式碼
@import  "../../common/stylus/icon.styl";//多餘的引入報錯:These relative modules were not found:
@import  "../../common/stylus/mixin.styl";
複製程式碼

vue中的v-el與v-ref 1.0與2.0的區別 v-el 作用: 通過 v-el 我們可以獲取到 DOM 物件。

v-ref 作用: 通過 v-ref 獲取到整個元件(component)的物件

2.0索引不能用$index 迴圈 v-for="(item, index) in items" 使用 :class="{‘current’:currentIndex === index}"

Math.round()把數四捨五入為最接近的整數。 Math.abs()取絕對值 ceil floor

dispaly: inline-block  //發現瀏覽器中此行失效,立馬想到拼寫錯誤
複製程式碼
box-shadow: h-shadow v-shadow blur spread color 
複製程式碼
    padding: 6px//擴大點選區域面積
    line-height: 24px
    font-size: 24px//行高和字型就可確定大小
複製程式碼
Vue.set( target, key, value )
Vue.set(this.food, 'count', 1);
複製程式碼

向響應式物件中新增一個屬性,並確保這個新屬性同樣是響應式的,且觸發檢視更新。它必須用於向響應式物件上新增新屬性,因為 Vue 無法探測普通的新增屬性

transition: all 0.4s linear//css屬性name,時間,轉速曲線

Vue.js 為 v-on 提供了 事件修飾符。通過由點(.)表示的指令字尾來呼叫修飾符。

.stop
.prevent
.capture
.self
.once
複製程式碼

獲取視窗的高度與寬度(不包含工具條與滾動條):

var w=window.innerWidth;
var h=window.innerHeight;
複製程式碼

訪問子元件方法:ref="子元件名" this.$refs.子元件名.子元件方法

方式二:獲取DOM

<div class="food-wrapper" ref="foodWrapper"><!--獲取DOM-->
let foodList = this.$refs.foodWrapper.getElementsByClassName('food-list-hook');
複製程式碼

注意:$refs 只會在元件渲染完成之後生效

並且它們不是響應式的。這僅作為一個用於直接操作子元件的“逃生艙”——你應該避免在模板或計算屬性中訪問 $refs。

vue2.0裡面已經棄用了events 可用此方法代替:www.jianshu.com/p/7f426c2a3…

踩坑:www.jianshu.com/p/256abebd4…

給img佔位,避免載入時,src還未拿到值,圖片位置被佔 width: 100%; height: 0; padding-top: 100% /* 相對於寬度計算,此時寬高相等*/;

使用反引號和${}可以實現變數與字串拼接

payDesc() {
    if (this.totalCount === 0) {
      return `¥${this.minPrice}元起送`;
    } else if (this.minPrice - this.totalPrice > 0) {
      let diff = this.minPrice - this.totalPrice;
      return `還差¥${diff}元起送`;
    } else {
      return '去結算';
    }
複製程式碼

小球向左滾動動畫:

.cart-decrease
      display: inline-block
      line-height: 20px
      font-size: 24px
      color: rgb(0, 160, 220)
      padding: 6px
      transition: all 0.4s linear
      &.move-transition
        opacity: 1
        transform: translate3d(0, 0, 0)
        .inner
          transition: all 0.4s linear
          transform: rotate(0)
      &.move-enter, &.move-leave
        opacity: 0
        transform: translate3d(24px, 0, 0)
        .inner
          transform: rotate(180deg)
複製程式碼

偽類與偽元素的特性及其區別:

偽類本質上是為了彌補常規CSS選擇器的不足,以便獲取到更多資訊; 偽元素本質上是建立了一個有內容的虛擬容器; CSS3中偽類和偽元素的語法不同; 可以同時使用多個偽類,而只能同時使用一個偽元素;

 :class="{'current':currentIndex===index}" 
 &.current
複製程式碼

計算屬性只有在相關依賴發生改變時才會重新求值,當頁面重新渲染(不是重新整理)的時候,計算屬性不會變化,直接讀取快取使用。

transform: translate3d(0,-100%,0);中的-100%,是為了讓子元素以自身內容,往上撐開自己的文字內容。