最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue組件設(shè)計(jì)-Sticky布局效果示例

 更新時(shí)間:2023年05月05日 11:28:06   作者:aiguangyuan  
這篇文章主要介紹了Vue組件設(shè)計(jì)-Sticky布局,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Vue組件設(shè)計(jì)-Sticky布局

Sticky布局即為粘性定位,常見于一些重要的頁(yè)面區(qū)域在向上滾動(dòng)時(shí)不會(huì)被卷起來(lái),在CSS中可以通過設(shè)置position:sticky來(lái)實(shí)現(xiàn)這一功能,但是如果出于兼容性考慮或是一些復(fù)雜的場(chǎng)景,就需要我們用傳統(tǒng)的方法來(lái)實(shí)現(xiàn),以下基于Vue封裝一個(gè)組件給大家參考。

1. 效果示例

 2. 組件封裝

<template>
    <div :style="{height:height + 'px', zIndex: zIndex }">
        <div
            :class="className"
            :style="{
                width: width,
                zIndex: zIndex,
                position: position,
                height: height + 'px',
                top: isSticky ? stickyTop + 'px' : '',
            }">
            <slot>
            </slot>
        </div>
    </div>
</template>
<script>
export default {
    name: "Sticky",
    props: {
        stickyTop: {
            type: Number,
            default: 0,
        },
        zIndex: {
            type: Number,
            default: 1,
        },
        className: {
            type: String,
            default: "",
        },
    },
    data() {
        return {
            position: "",
            active: false,
            isSticky: false,
            width: undefined,
            height: undefined,
        };
    },
    mounted() {
        this.height = this.$el.getBoundingClientRect().height;
        window.addEventListener("scroll", this.handleScroll);
        window.addEventListener("resize", this.handleResize);
    },
    // 組件激活時(shí)調(diào)用
    activated() {
        this.handleScroll();
    },
    destroyed() {
        window.removeEventListener("scroll", this.handleScroll);
        window.removeEventListener("resize", this.handleResize);
    },
    methods: {
        sticky() {
            if (this.active) {
                return;
            }
            this.active = true;
            this.isSticky = true;
            this.position = "fixed";
            this.width = this.width + "px";
        },
        handleReset() {
            if (!this.active) {
                return;
            }
            this.reset();
        },
        reset() {
            this.position = "";
            this.width = "auto";
            this.active = false;
            this.isSticky = false;
        },
        handleScroll() {
            // 粘性定位區(qū)域的寬度
            const width = this.$el.getBoundingClientRect().width;
            this.width = width || "auto";
            // 粘性定位距屏幕頂部的高度
            const offsetTop = this.$el.getBoundingClientRect().top;
            // 如果滾動(dòng)高度小于設(shè)定的定位高度
            if (offsetTop < this.stickyTop) {
                this.sticky();
                return;
            };
            this.handleReset();
        },
        handleResize() {
            if (this.isSticky) {
                this.width = this.$el.getBoundingClientRect().width + "px";
            }
        },
    },
};
</script>

3. 組件使用

<template>
    <div style="height:2000px;">
        <div style="height:200px;background-color:green"></div>
        <Sticky>
            <div style="height:300px;background-color:red;line-height:300px;text-align:center;font-size:30px;">
                這是定位區(qū)域
            </div>
        </Sticky>
    </div>
</template>
<script>
import Sticky from "@/components/Sticky";
export default {
    components:{
        Sticky:Sticky
    }
};
</script>

到此這篇關(guān)于Vue組件設(shè)計(jì)-Sticky布局的文章就介紹到這了,更多相關(guān)Vue Sticky布局內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue mixins詳解與使用技巧

    Vue mixins詳解與使用技巧

    Vue mixins提供了一個(gè)非常靈活的方式來(lái)分發(fā)Vue組件中的可復(fù)用功能,通過全局混入和局部混入,可以將預(yù)定義的方法、數(shù)據(jù)等混合到Vue組件中,這種技術(shù)可以簡(jiǎn)化代碼,提高開發(fā)效率,并允許在不同組件間共享功能
    2024-09-09
  • Vue 刷新當(dāng)前路由的實(shí)現(xiàn)代碼

    Vue 刷新當(dāng)前路由的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue 刷新當(dāng)前路由的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue中v-form標(biāo)簽里的:rules作用及定義方法

    Vue中v-form標(biāo)簽里的:rules作用及定義方法

    文章介紹了在Vue項(xiàng)目中使用ElementUI或ElementPlus組件庫(kù)時(shí),如何通過`el-form`標(biāo)簽的`:rules`屬性進(jìn)行表單驗(yàn)證,`:rules`屬性用于定義表單項(xiàng)的驗(yàn)證規(guī)則,包括必填項(xiàng)、格式校驗(yàn)、長(zhǎng)度限制等,文章還展示了如何定義基本驗(yàn)證規(guī)則和自定義驗(yàn)證函數(shù),感興趣的朋友一起看看吧
    2025-03-03
  • vue3實(shí)現(xiàn)無(wú)縫滾動(dòng)列表效果(大屏數(shù)據(jù)輪播場(chǎng)景)

    vue3實(shí)現(xiàn)無(wú)縫滾動(dòng)列表效果(大屏數(shù)據(jù)輪播場(chǎng)景)

    vue3-scroll-seamless 是一個(gè)用于 Vue 3 的插件,用于實(shí)現(xiàn)無(wú)縫滾動(dòng)的組件,它可以讓內(nèi)容在水平或垂直方向上無(wú)縫滾動(dòng),適用于展示輪播圖、新聞滾動(dòng)、圖片展示等場(chǎng)景,本文就給大家介紹了vue3實(shí)現(xiàn)無(wú)縫滾動(dòng)列表效果,需要的朋友可以參考下
    2024-07-07
  • vue數(shù)據(jù)響應(yīng)式原理知識(shí)點(diǎn)總結(jié)

    vue數(shù)據(jù)響應(yīng)式原理知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給各位整理的是一篇關(guān)于vue數(shù)據(jù)響應(yīng)式原理知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以跟著學(xué)習(xí)下。
    2020-02-02
  • SyntaxError:?/xx.vue:?Unexpected?token,?expected?“,“錯(cuò)誤解決

    SyntaxError:?/xx.vue:?Unexpected?token,?expected?“,“錯(cuò)誤解

    這篇文章主要為大家介紹了SyntaxError:?/xx.vue:?Unexpected?token,?expected?“,“錯(cuò)誤解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue檢測(cè)對(duì)象和數(shù)組的變化分析

    vue檢測(cè)對(duì)象和數(shù)組的變化分析

    這篇文章給大家分享了vue檢測(cè)對(duì)象和數(shù)組的變化的相關(guān)知識(shí)點(diǎn)與實(shí)例代碼,有興趣的朋友參考下。
    2018-06-06
  • Vue中列表渲染指令v-for的基本用法詳解

    Vue中列表渲染指令v-for的基本用法詳解

    v-for指令是在模板編譯的代碼生成階段實(shí)現(xiàn)的,當(dāng)遍歷數(shù)組或?qū)ο髸r(shí)需要使用列表渲染指令v-for。本文主要為大家介紹了v-for指令的基本用法,希望對(duì)大家有所幫助
    2023-04-04
  • vue限制文本輸入框只允許輸入字母、數(shù)字、禁止輸入特殊字符

    vue限制文本輸入框只允許輸入字母、數(shù)字、禁止輸入特殊字符

    這篇文章主要介紹了vue限制文本輸入框只允許輸入字母、數(shù)字、不允許輸入特殊字符,通過監(jiān)聽表單輸入的內(nèi)容,使用方法的缺陷,本文通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • vue data恢復(fù)初始化數(shù)據(jù)的實(shí)現(xiàn)方法

    vue data恢復(fù)初始化數(shù)據(jù)的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇vue data恢復(fù)初始化數(shù)據(jù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-10-10

最新評(píng)論

阳朔县| 皮山县| 龙门县| 井冈山市| 大田县| 临漳县| 建始县| 安宁市| 邵武市| 汉源县| 板桥市| 东阿县| 余庆县| 孟连| 衢州市| 康马县| 张家口市| 青神县| 夏河县| 巴林右旗| 孟津县| 清流县| 建平县| 读书| 邯郸市| 广宗县| 三河市| 铁岭市| 交口县| 会宁县| 威宁| 临夏县| 朝阳区| 蕉岭县| 海宁市| 万荣县| 兴隆县| 将乐县| 萨嘎县| 无为县| 宁强县|