docs_vue2/one/docs/demo/anchor/sticky.vue

116 lines
1.9 KiB
Vue
Raw Normal View History

2020-08-13 11:47:56 +08:00
<template>
<article class="anchor-demo">
<div class="line"/>
<div
ref="container"
class="anchor-wrapper"
>
<div
v-for="i in coffees"
:id="i.value.indexOf('#') >= 0 ? i.value.slice(1) : i.value"
:key="i.value"
class="block"
>
{{ i.label }}
</div>
<section class="anchor-two">
<veui-anchor
:items="coffees"
container="container"
/>
</section>
</div>
</article>
</template>
<script>
import { Anchor } from 'veui'
export default {
components: {
'veui-anchor': Anchor
},
data () {
return {
coffees: [
{
label: 'Infused',
value: '#infused2',
2020-08-13 11:47:56 +08:00
children: [
{
label: 'Breadcrumb',
value: '/components/breadcrumb'
}
]
},
{
label: 'Boiled',
value: '#boiled2',
2020-08-13 11:47:56 +08:00
children: [
{
label: 'Button',
value: '/components/button'
}
]
},
{
label: 'Espresso',
value: '#espresso2'
2020-08-13 11:47:56 +08:00
},
{
label: 'Milk coffee',
value: '#milk-coffee2'
2020-08-13 11:47:56 +08:00
}
]
}
}
}
</script>
2021-09-15 20:03:51 +08:00
<style lang="less" scoped>
2020-08-13 11:47:56 +08:00
.anchor-demo {
position: relative;
2021-09-15 20:03:51 +08:00
2020-08-13 11:47:56 +08:00
.anchor-wrapper {
position: relative;
display: flex;
flex-direction: column;
height: 300px;
overflow: auto;
border: 1px dashed;
& > section {
position: absolute;
}
}
.block {
white-space: nowrap;
border-top: 1px solid #000;
2020-08-13 11:47:56 +08:00
width: 100px;
height: 150px;
flex: none;
2021-09-15 20:03:51 +08:00
2020-08-13 11:47:56 +08:00
& + .block {
margin-top: 20px;
}
}
.anchor-one {
position: absolute;
left: 250px;
top: 50px;
}
2021-09-15 20:03:51 +08:00
2020-08-13 11:47:56 +08:00
.anchor-two {
position: absolute;
left: 250px;
2020-08-13 11:47:56 +08:00
top: 50px;
}
}
</style>
<docs>
虚线框标记容器实线标记锚点项顶部当二者重合触发激活
2020-08-13 11:47:56 +08:00
</docs>