Vue3部分css细节及显示细节

130 阅读2分钟

css细节

  • 写界面时:一般先写HTML,然后补充css,此时是有可能改变HTML结构的。最后写js。很多全局都看可能用到的变量,函数,例如色号。字体大小等,可以统一新建一个helper.scss文件,放在assets。
  • 在给z-index时需要先给一个相对定位 position:relative;
  • 可以通过获取屏幕宽度,通过宽度来判断是否需要做某些操作。
const width = document.documentElement.clientWidth; 
//获取屏幕宽度。
  • 选中和未选中的状态进行切换,可以用 :class="{checked:xxx}"来进行。如果xxx是false,则class没有值,如果xxx是true,则class值为checked。xxx可以通过传值传入。

  • x-link或者a标签的选中态做法:active-class="selected",此时点击,就会给点击的元素加上一个selected的class。

  • 子组件的CSS不可以用scoped。父组件可以。

  • Teleport组件可以将包含的元素的环境移动到指定环境内,避免被遮挡。

<teleport to="body">
//将环境移动到body
  • 获取element元素的宽,高,顶部,左部的位置,用const {width,height,top,left} = element.getBoundingClientRect()。可以获取四个值。

  • clip-path:ellipse(xx xx at xx xx)可以用来在css里画圆弧。具体参数自行尝试。

  • 子元素的字体不会继承父元素的字体,所以需要继承时加上font:inherit;

-弹出有输入框的弹窗提示:window.prompt('信息xxx'),弹出仅提示的弹框:window.alert('标签名不能为空')

  • 无法用import将js文件导入到ts文件,用require。

  • 做布局时,如果只有两个元素,一个在左,一个居中,此时可以再做一个不展示的元素,然后

display:flex;
justify-content:center;
align-items:center

这样就不需要绝对定位,就可以做到居中对齐的效果,不展示的元素大小需要和左边展示的元素大小一致,才更好保证中间的居中。

插槽

父组件引用子组件时,在组件元素之间写内容时并不会显示。加上标签就可以使所写的内容渲染出来。

如果需要渲染多段内容,则需要使用到具名插槽。

//子组件内,使用不同插槽
<header>
  <slot name="title"></slot>
  <span @click="close" class="you-dialog-close"></span>
</header>
<main>
  <slot name="content"></slot>
</main>
//父组件内给需要展示的内容插槽命名
<Dialog>
  <template v-slot:title>
    <strong>可编辑的标题</strong>
  </template>
  <template v-slot:content>
    <div>这是第一行内容</div>
    <div>这是第二行内容</div>
  </template>
</Dialog>

此时就可以在子组件内渲染出父组件引用子组件时,子组件包裹的内容了。

获取插槽的内容:

在HTML里,直接用slot标签,在JS里,用const defaults = context.slots.default()