日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
從0到1搭建一款頁面自適應(yīng)組件(Vue.js)

 組件將根據(jù)屏幕比例及當(dāng)前瀏覽器窗口大小,自動(dòng)進(jìn)行縮放處理。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括寶豐網(wǎng)站建設(shè)、寶豐網(wǎng)站制作、寶豐網(wǎng)頁制作以及寶豐網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,寶豐網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到寶豐省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

  • 建議在組件內(nèi)使用百分比搭配flex進(jìn)行布局,以便于在不同的分辨率下得到較為一致的展示效果。
  • 使用前請(qǐng)注意將body的margin設(shè)為0,否則會(huì)引起計(jì)算誤差。

fullScreenContainer.vue

 
 
 
 
  1.   
  • #full-screen-container {
  •   position: fixed;
  •   top: 0px;
  •   left: 0px;
  •   overflow: hidden;
  •   transform-origin: left top;
  •   z-index: 999;
  • }
  • autoResize.js

     
     
     
     
    1. export default {
    2.     data() {
    3.         return {
    4.             dom: '',
    5.             width: 0,
    6.             height: 0,
    7.             debounceInitWHFun: '',
    8.             domObserver: ''
    9.         };
    10.     },
    11.     methods: {
    12.         debounce(delay, callback) {
    13.             let lastTime;
    14.             return function() {
    15.                 clearTimeout(lastTime);
    16.                 const [that, args] = [this, arguments];
    17.                 lastTime = setTimeout(() => {
    18.                     callback.apply(that, args);
    19.                 }, delay);
    20.             };
    21.         },
    22.         observerDomResize(dom, callback) {
    23.             const MutationObserver =
    24.                 window.MutationObserver ||
    25.                 window.WebKitMutationObserver ||
    26.                 window.MozMutationObserver;
    27.             const observer = new MutationObserver(callback);
    28.             observer.observe(dom, {
    29.                 attributes: true,
    30.                 attributeFilter: ['style'],
    31.                 attributeOldValue: true
    32.             });
    33.             return observer;
    34.         },
    35.         async autoResizeMixinInit() {
    36.             const {
    37.                 initWH,
    38.                 getDebounceInitWHFun,
    39.                 bindDomResizeCallback,
    40.                 afterAutoResizeMixinInit
    41.             } = this;
    42.             await initWH(false);
    43.             getDebounceInitWHFun();
    44.             bindDomResizeCallback();
    45.             if (typeof afterAutoResizeMixinInit === 'function')
    46.                 afterAutoResizeMixinInit();
    47.         },
    48.         initWH(resize = true) {
    49.             const { $nextTick, $refs, ref, onResize } = this;
    50.             return new Promise(resolve => {
    51.                 $nextTick(() => {
    52.                     const dom = (this.dom = $refs[ref]);
    53.                     this.width = dom ? dom.clientWidth : 0;
    54.                     this.height = dom ? dom.clientHeight : 0;
    55.                     if (!dom) {
    56.                         console.warn(
    57.                             'DataV: Failed to get dom node, component rendering may be abnormal!'
    58.                         );
    59.                     } else if (!this.width || !this.height) {
    60.                         console.warn(
    61.                             'DataV: Component width or height is 0px, rendering abnormality may occur!'
    62.                         );
    63.                     }
    64.                     if (typeof onResize === 'function' && resize) onResize();
    65.                     resolve();
    66.                 });
    67.             });
    68.         },
    69.         getDebounceInitWHFun() {
    70.             const { initWH } = this;
    71.             this.debounceInitWHFun = this.debounce(100, initWH);
    72.         },
    73.         bindDomResizeCallback() {
    74.             const { dom, debounceInitWHFun } = this;
    75.             this.domObserver = this.observerDomResize(dom, debounceInitWHFun);
    76.             window.addEventListener('resize', debounceInitWHFun);
    77.         },
    78.         unbindDomResizeCallback() {
    79.             let { domObserver, debounceInitWHFun } = this;
    80.             if (!domObserver) return;
    81.             domObserver.disconnect();
    82.             domObserver.takeRecords();
    83.             domObserver = null;
    84.             window.removeEventListener('resize', debounceInitWHFun);
    85.         }
    86.     },
    87.     mounted() {
    88.         const { autoResizeMixinInit } = this;
    89.         autoResizeMixinInit();
    90.     },
    91.     beforeDestroy() {
    92.         const { unbindDomResizeCallback } = this;
    93.         unbindDomResizeCallback();
    94.     }
    95. };

    這樣,一個(gè)頁面自適應(yīng)組件就這樣搭建完成了,下面,我們將引入組件看一下效果。

     
     
     
     

    效果很好,這樣對(duì)于一些開發(fā)自適應(yīng)頁面非常容易。


    新聞名稱:從0到1搭建一款頁面自適應(yīng)組件(Vue.js)
    新聞來源:http://www.dlmjj.cn/article/djhjshs.html