vue的自定义指令directive自动计算
宽度和
高度变化
Vue.directive('resize',{ // 指令的名称
bind(el, binding) { // el为绑定的元素,binding为绑定给指令的对象
let width = '', height = '';
function isReize() {
const
style = document.defaultView.get
Comput
edStyle(el);
import { reactive, toRefs, computed, watch, onMounted } from 'vue';
import { useStore } from 'vuex';
interface DataType {
screenWidth: string;
changeWidth: () => void;
timer: boolean;
changeResultSheBei: () => void;
sheBeiResult: any;
1、首先在dom元素中定义style属性,如下:
<template>
<div class="punch-clock-wrapper" ref="punchcontent" :style="{height: scrollerHeight}">
<div class="punch-clock-header">
<img :src="clockList.imageUrl"
2.解决思路
Vue的理念是以数据驱动视图,所以拒绝通过改变元素的margin-top来实现滚动效果。写好css
样式,只需改变每张图片的class即可实现轮播效果。动画效果交给transition完成。可以将轮播图看成两个(mainSlide和extraSlide),各个图片的位置如图所示:
3.代码实现
各个slide的
样式:
$width: 800px; // 容器
宽度
$height: 300px; // 容器
高度
$bWidth: 500px; // 大图片
宽度
$sWidth: $width - $bWidth; // 小图片
宽度
import { SelfAdaptionBox } from 'self-adaption-box'
components: { SelfAdaptionBox }
注意:都需要约会
样式
import 'self-adaption-box/dist/SelfAdaptionBox.css'
设计图
宽度
设计图
高度
使用 CSS3 的 animaition 通过拼图块背景图片位置的变化, 添加平滑过渡效果在 js 中通过为拼图块添加的自定义属性 index ,获取当前方块的背景图片位置信息
整个页面分为两个部分, 分别是拼图部分和功能按钮部分
使用 vuetify 的网格系统, 在不同屏幕下, 两个部分的布局和宽度动态变化, 在移动端, 为上下布局, 其他视口下均为左右布局,
拼图方块动态大小
由于移动端宽度差异过多, 此处拼图面板只设置最大宽度 max-width: 550px, 高度根据宽度自适应,
遇到的问题: 在给拼图容器根据容器宽度动态设置高度时, 发现浏览器大小变化时, 高度无法动态跟随变化, 需要刷新后, 样式才变化,
解决方法, 通过搜索资料, 在 GitHub 上发现了一个 VUE 按比例设置标签高度的指令, 通过引入并使用这个指令, 实现了拼图面板与方块根据页面大小动态改变的效果
方块背景图片的设置
实现上述拼图方块的动态改变后, 方块背景图片大小应该随着方块的宽高而动态的改变, 同时方块的背景图片位置也应该动态改变
遇到的问题: 在根据方块宽度与高度设置拼图方块背
Div即父容器不根据内容自适应
高度,我们看下面的代码:
复制代码代码如下: <div id=”main”> <div id=”content”></div> </div>
当Content内容多时,即使main
设置了
高度100%或auto。在不同浏览器下还是不能完好的自动伸展。内容的
高度比较高了,但容器main的
高度还是不能撑开。
我们可以通过三种方法来解决这个问题 1增加一个清除浮动,让父容器知道
高度。请注意,清除浮动的容器中有一个空格。
复制代码代码如下: <div id=”m