js点击居中

<style>
#app{
    min-height:100vh;
    .typebox{
        overflow-x: auto;white-space:nowrap;width: auto;margin:5.33vw auto 0;position: sticky;position: -webkit-sticky;z-index:20;padding:1vw 3.2vw 2.13vw;
        .typeli{
            display: inline-flex;margin-right: 6.67vw;
            .typetxt{
                margin-bottom:1.8vw;
            }
            .line{
                width: 5.6vw;height: 0.8vw;
            }
        }
        .typeli.active{
            font-size:4.3vw;color:#24a266;font-weight:bold;
        }
    }
}
</style>
<body>
	<div id="app" v-cloak="" >
		<div class="typebox bg-f9f9f9" id="box" :style="{'top':`${navTop}px`}">
	          <div class="typeli flex-column-center f-3-7" @click.stop="choosetype(index)" :class="{active:typeindex==index}" v-for="(vo,index) in firstCate" :key="index">
	               <div class="typetxt">{{vo.cat_name}}</div>
	               <div class="line bg-24a266" v-if="typeindex==index"></div>
	           </div>
	       </div>
	</div>
</body>
<script type="text/javascript" src="../../script/vue.js"></script>
<script type="text/javascript" src="../../script/fastclick.js"></script>
<script type="text/javascript">
    vm.navTop = document.querySelector('#header').offsetHeight;
	//初始化fastclick方法
    window.addEventListener('load', function () {
        FastClick.attach(document.body);
    }, false);
    var vm = new Vue({
		el:'#app',
		data:{
        	navTop:'',
        	typeindex:'0',
		},
		methods:{
			choosetype(index){
				var doc = document
	            // 当前视窗的宽度
	            var WINDOW_OFFSETWIDTH = doc.documentElement.clientWidth
	            var liArr = doc.querySelectorAll('#box > .typeli')
	            // 获取当前点击元素的宽度
	            var itemWidth = liArr[index].offsetWidth
	            // 当前事件对象相对移动的距离
	            var moveX =liArr[index].offsetLeft
	            // 目标居中的距离 = (当前元素距离左边的相对距离 / 2)+ (视口距离 / 2)
	            var left = moveX - (WINDOW_OFFSETWIDTH / 2) + (itemWidth / 2)
	            doc.getElementById('box').scrollLeft = left;

				vm.typeindex = index;
	            vm.goodslist = [];
	            vm.page = 1;
	        	vm.get_goodslist();
	        },
        }
    })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值