前端-日常笔记(个人使用)

调整组件库的样式

对于element-UI还有ant-design-vue里面的组件除了api修改样式之外还可以根据源码修改组件样式。

但是难度比较大,一般要在github里面找到源码然后读懂源码修改样式。

样式-动态绑定class、style

<div @click.stop="toggleSubMenu(index)" :class="{'menu-item': true, 'selected': selectedIndex === index}">
	{{ item.name }}
</div>

这段代码里面::class="{'menu-item': true, 'selected': selectedIndex === index}"表示

menu-item属性一直生效,selected样式当selectedIndex = index的时候生效。

@click.stop阻止父组件的事件发生

打开菜单是click.stop的经典应用。

原理:在父子标签中如果同时存在点击事件首先会只执行子组件中的事件然后执行父组件的事件。

应用场景:在点击input输入框的时候展示菜单,点击其他部分则关闭菜单。那么在点击菜单部分的时候也算在input框外部,但是此时不能关闭菜单所以要防止关闭菜单。注意只对父组件起作用不对其他祖先组件起作用

代码实例:

                <div class="schMsg" @click="toggleMenu" @click.stop>
                    <div class="dropdown-input">
                        <span>|</span>
                        <input type="text" v-model="addInfoForm.classfy" placeholder="点击选择研究方向" readonly />
                        <img src="./assets/next.png" alt="Image" @click="nextStep" style="cursor: pointer;">
                    </div>
                    <div v-if="menuVisible" class="dropdown-menu">
                        <ul>
                            <li v-for="(item, index) in tmpoptions" :key="index">
                                <div @click.stop="toggleSubMenu(index)"
                                    :class="{ 'menu-item': true, 'selected': selectedIndex === index }">
                                    {{ item.name }}
                                </div>
                                <!-- 二级菜单 -->
                                <ul v-if="item.subMenuVisible" class="sub-menu">
                                    <li v-for="(subItem, subIndex) in item.children" :key="subIndex"
                                        class="sub-menu-item" @click="selectSubItem(index, item, subItem)">
                                        <span>
                                            {{ subItem }}
                                        </span>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </div>
                </div>

父级点击函数:toggleMenu(打开菜单)

子集点击函数:toggleSubMenu,点击组织toggleMenu发生并且执行toggleSubMenu函数。

监听事件

举例:

首先事件定义为全局监听点击事件,函数是:

mounted() {  document.addEventListener('mousedown', this.handleClickOutside); }


beforeDestroy() {  document.removeEventListener('mousedown', this.handleClickOutside); }


handleClickOutside(event) {  if (!this.$el.contains(event.target)) {    this.menuVisible = false;  } }

这个函数就是,全局监听,当点击事件放生的时候执行函数handleClickOutside

Vue生命周期

生命周期函数也叫钩子函数:

beforeCreate() created()

beforeMount() mounted()

beforeUpdate() updated()

activated() deactivated()

beforeDestroy() destroyed()

(1)beforeCreate()

  • vue实例创建前的状态,数据没有,虚拟DOM没有 真实DOM没有
  • 应用:可以在这里加loading事件

(2)created() 常用

  • vue实例创建完毕状态,数据有,虚拟DOM没有 真实DOM没有
  • 应用:请求后端数据,拿到数据。
  • 不过,大伙也会在mounted请求后端数据,我的理解是:如果需要结合请求数据,操作DOM节点,会在这里请求数据,在created请求后端数据会存在数据没有加载出来,需要进行异步加载。

(3)beforeMount()

  • 数据有,虚拟DOM有, 真实DOM没有

(4)mounted() 常用

  • 数据有,虚拟DOM有, 真实DOM有
  • 应用:发送ajax请求,请求后端数据。节点操作

(5)beforeUpdate()

  • 在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。
  • 在工作中,这个钩子函数我没怎么运用过。

(6) updated()

  • 在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情
  • 况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。
  • 在工作中,这个钩子函数我没怎么运用过。

(7)activated()

  • 一定要配合keep-alive(缓存作用)来使用,活动时触发

(8)deactivated()

  • 一定要配合keep-alive(缓存作用)来使用,非活动时触发。
  • 应用:activated和deactivated配合使用,切换页面,记录历史浏览位置,增强用户体验效果。实现步骤,后续会更新发布,再添加链接。

(9) beforeDestroy

  • 销毁前状态

(10)destroyed

  • 执行destroy()后,不会改变已生成的DOM节点,但后续就不再受vue控制了
  • 应用:清除定时器、延迟器、取消ajax请求等

postion布局样式 -父相对子绝对

在flex布局的时候,不能越级进行定位

例如

<div class='futher1'>
	<div>
		<div class='son'>
		<div/>
	<div/>
<div/>

在futher1div块下,只会对儿子标签进行修饰,不会对孙子标签进行修饰。

note:想到三层定位了,可以父亲相对定位。儿子相对定位,但是通过margin等来调整样式。在孙子标签内绝对定位。

组件样式-两个类

                    <div @click="prevStep" class="image-container">
                        <img src="./assets/arrow.png" alt="返回" class="image">
                        <img src="./assets/arrowhover.png" alt="返回" class="image hover-image">
                    </div>

这个代码中class="image hover-image"表示,这个img组件有两个类。同时拥有样式1:image和样式2:hover-image

    .hover-image {
        opacity: 0;
    }


    .image-container:hover .hover-image {
        opacity: 1;
        //表示透明度,此时为完全不透明
    }


    .image-container:hover .image:not(.hover-image) {
        opacity: 0;
    }

在这个样式中

.image-container:hover .hover-image表示:在image-container类所在的标签下,如果鼠标悬停,那么类hover-image对应的标签的样式

.image-container:hover .image:not(.hover-image)表示:在image-contianer中悬停,类名是image但不是hover-image的标签的样式

transition: opacity 0.3s ease; 是一个 CSS 属性,它用于定义当元素的 opacity 属性发生变化时,过渡效果的持续时间和缓动函数。具体解释如下:

  • transition: 这是一个简写属性,用于设置一个或多个过渡效果。
  • opacity: 指定要过渡的属性,这里是透明度。
  • 0.3s: 过渡效果的持续时间,这里是 0.3 秒。
  • ease: 缓动函数,定义过渡效果的速度变化方式。ease 表示从慢到快再到慢的过渡效果。
#学习#
全部评论

相关推荐

从小父母离异家里没人管,靠着心里的不安和学校的环境也算是坚持到了学有所成的地步。到了大学环境开始松散不知道该做什么,只觉得在不挂科的基础上能往上考多少就考多少,等到秋招来临才发现自己有多么幼稚无能,今年九月份初才发现自己原来连一个求职的方向都没有。因为之前做过前后端一体的课设,算是有过了解,而对于其他岗位连做什么都不知道,因此这一个半个月在越来越焦虑的同时埋头苦学,事到如今想要活下去我似乎只能走前端这条路了,9月初先是靠着虚假夸大能力的简历得到一些笔试来确定了考察的方向,有一个大厂的无笔试面试最终是拒绝了没有勇气去面对。然后在这个基础上埋头苦学,如今也算是搭好了自己前端学习的框架和思考的瞄,可以逐渐给自己扩展新的知识和能力了,但这并不是一件多好的事儿,因为我发现学的越多越焦虑,学的越多便越无力。因为我感觉我如今努力学习的知识都是竞争对手们早就掌握了的东西,我如今困惑追求答案的难题早就被别人解决。别人早就能得心应手地做出项目而我连思考都会卡壳,看着别人的笔试和面经上那些闻所未闻的题目,我才知道别人到底有多强而我有多幼稚,我什么时候才能达到别人那种堪称熟练的能力呢?而且网上的焦虑越多越多,即便是真有这么高的能力最后也大概落得一个低薪打工人的下场,我真的感到迷茫。秋招都快结束了,而我还在继续痛苦的学习之旅,这些天找前端面试发现似乎问的有些简单跟网上搜到的内容不符(可能因为并不是大厂),我是不是本来就没打算被招所以别人懒得细问呢?我不知道,我只能继续总结下去学习下去,不管如何我都要活下去,如果我能早一些准备就好了,如果暑假能意识到现在这个情况就好了,可惜没有如果。种下一棵树的最好时间是十年前,其次是现在,虽然我相信自己的学习能力,但已经错过了最好的时机,只能在焦虑与痛苦中每天坚持学下去。目前的路还有很长很长,先去把typescript看了,再去巩固vue3的基础,再去练习elementui的使用,如果这能找到实习的话就好了。接下来呢?去学uniapp和小程序,不管如何我都要对得起曾经努力的自己。即便我们都感到痛苦,但我心中还是希望我们都能靠自己的努力来获取自己想要的幸福。
紧张的牛牛等一个of...:在担心什么呢,有一手985的学历在,就算是小厂别人都会要的,咱们双非的人更多,多少还在沉沦的,怕什么了
一句话证明你在找工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务