博客前端笔记

  • 手风琴效果
    在实现手风琴效果(也就是固定高度容器的动画显示和以隐藏的效果)时,有一个bug,我使用transition来控制高度,开始时,height:0,结束时height:auto transition: all 0.3s ease,发现过渡效果无法实现,因为transition只能监听到有固定的中间值的属性,而auto没有具体的值,所以不能实现过渡效果.
    解决方法: 使用max-height属性,因为max-height是根据内容来撑开高度的,只要max-height 大于正常高度就好了。

  • button margin: 0 auto失效问题
    在给一个button设置margin: 0 auto时发现不起效果,查资料后发现,行内元素行内块元素margin: 0 auto是不生效的

  • Vue全局Css的问题
    如果组件的css加了scoped标签那么写的css样式只能作用于当前组件内部.而不加 scoped或者在main.js引入的css,在webpack打包下最后都会整合成为index.html.而css也会打包到index.html中.未加scoped的css就会作用于整个index.html页面,达到所有组件都能引用的效果,形成全局css文件.

  • 媒体查询的一个技巧
    如果一个元素在大屏和小屏样式不一样时,比如width: 大屏200px 小屏100px,可以为这个元素不一样的样式设置一个class,并在@media 大屏和小屏分别选中这个样式,进行更改.

  • 有关事件冒泡

	<div class="mobile-box" @click="mobileContentShow">
      <i class="iconfont icon-leimupinleifenleileibie2"></i>
      <ul v-if="mobileContentShowFlag" @click.stop>
        <li class="mobile-box-item" @click="switchPage(0, 1)">首页</li>
        <li class="mobile-box-item" @click="switchPage(1, 1)">分类</li>
        <li class="mobile-box-item" @click="switchPage(2, 1)">标签</li>
        <li class="mobile-box-item" @click="switchPage(3, 1)">赞赏</li>
        <li class="mobile-box-item" @click="switchPage(4, 1)">About me</li>
      </ul>
    </div>

在写这段代码时触发了事件冒泡机制,在mobileContentShow方法中,是对flag取反,进行dom的显示和隐藏,switchPage这个函数是要进行dom的隐藏,而由于事件冒泡,调用switchPage隐藏dom后,又进行了mobileContentShow的调用,给flag取反,导致显示.
在vue中使用@click.stop取消冒泡,@click.prevent取消默认事件

  • 记录 封装 图片查看组件的 思路
  1. 在我的vue博客中,我想要实现一个图片放大查看的组件,因为需要在每一个页面中,点击图片时,都要打开此组件进行图片的展示,所以我需要在每一个页面中都加入此组件.
  2. 由于上述所说,每一个页面都需要用此组件,所以这个组件加入到app.vue组件中,这样就保证了这个组件在每个页面中都能显示.
  3. 但是因为组件被抽取到了app.vue之中,组件需要知道显示状态,所以数据要从页面或者子组件中传递到app.vue中告诉组件,这样就需要引入vuex.通过vuex传递组件的状态.
  4. 现在数据需要通过vuex传递给app.vue然后在从app.vue传递给图片显示组件,所以图片显示组件可以直接从vuex获取需要的数据,不需要app.vue.
  5. 同理,还有模态框提示组件/背景音乐<audio>这种所有页面都要用的组件都可以放到app.vue中,并且通过vuex传递数据.
  • 抽取图片查看组件逻辑到mixin中
    因为点击图片时要打开图片查看组件,将点击的图片在图片查看组件中观看,逻辑相同,所有的图片点击都是这个方法,所以抽取到mixin中.
// html
<img
   src="../../../assets/img/avator.jpg"
   alt=""
   @click="showImgViewer($event)"/>
//逻辑  同一套逻辑,所以抽取到mixin中
methods: {
    showImgViewer(e) {
      this.$store.commit("showImageViewer", e.target.src);
    },
  }
  
  • 浏览器的各种高度问题
	  document.body.clientHeight    网页可见区域高度(仅针对body,与$("body").height()的值相同)
      document.body.offsetHeight    网页可见区域高度(仅针对body,包括滚动条和边框,若滚动条和边框为0,则和clientHeight相等)
      window.innerHeight 可视窗口的高度(与$(window).height()的值相同) //IE9+、Chrome、Firefox、Opera 以及 Safari
      document.body.scrollHeight    网页正文全高(与$(document).height()的值相同)
      document.body.scrollTop       网页中被卷去的高度(当前页面顶部与整个网页定的距离)
      window.screen.heitgh          整个屏幕的高度
      window.screen.availHeight     屏幕可用工作区域的高度
      window.outerHeight            整个浏览器的高度
  • 图片路径加载问题
    在vue中,需要加载本地图片的时候,如果图片的路径@/assets/xxx/xxx会导致无法识别@使得图片路径失效,导致图片无法加载出来. 而如果直接使用C:/xxx/xxx会导致项目在部署或者更换文件路径时导致图片路径错误找不到图片. 所以可以使用require('@/assets/xxx/xxx')进行加载

  • 富文本编辑器中的图片预览实现

  1. detail页面之中,需要对封面和文章中的图片实现点击放大预览效果,封面比较好实现,跟原来的方法是一样的,点击封面,将vuex中的flag设为true,把url设成封面的url就实现了.
  2. 但是问题在于,文章的内容是动态从数据库获取的,文章之中有<img>标签,并把文章内容通过v-html插入到容器中,所以文章是动态的,无法直接通过监听click事件来预览图片.
  3. 所以我们通过事件委托的方法来实现图片的预览功能,我们给文章的容器添加点击事件,由于事件冒泡机制,点击容器里面的dom相当于点击容器,所以容器内部的dom被点击,所以容器被点击时,如果e.target.nodeName === 'IMG说明点击的是图片,e.target就是点击的图片.点击图片就可以进行图片预览,
<div
  class="editor"
  v-html="artical.articalContent"
  @click="articalClick($event)"
></div>
articalClick(e) {
      console.log(e.target.nodeName);
      if (e.target.nodeName === "IMG") {
        this.showImageViewer(e.target.src);
      }
    },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: B站飞哥的《大前端进阶笔记》是一份非常实用的学习资料,旨在帮助学习前端技术的人进一步提高自己的技能。笔记包括了前端基础知识的学习、前端开发中常用的框架、库和工具的介绍,以及一些应用实例的实战演练。其中,最引人注目的是笔记的实战演练部分,涵盖了多个项目的案例,包括电商网站、音乐播放器、博客等,这些实例对于前端开发人员来说非常有用,可以让他们更好地掌握前端开发的核心技能。 这份笔记分为六个部分,包括HTML、CSS、JavaScript、框架、工程化和实战项目。每个部分都包含了该部分的基础知识、实践技巧和高级应用,逐步深入地讲解了前端开发的各个方面。在框架和工具章节,笔记讲解了前端界流行的React、Vue、Webpack等,并提供了实际案例的演示。 总体而言,B站飞哥的《大前端进阶笔记》是一份非常优秀的学习资料,对于新手和有经验的前端开发人员都非常有帮助。笔记内容丰富、条理清晰,讲解方式易于理解,并提供了实际案例的演示,是一份非常有价值的前端学习资源。 ### 回答2: B站是一个以弹幕视频为特色的视频 sharing 社区,拥有海量的优质视频资源。其中,飞哥大前端进阶笔记是一系列大前端学习视频,由 B站菜鸟技术博主飞哥所录制和发布。 飞哥大前端进阶笔记旨在帮助前端工程师提升技术能力和进阶能力,内容丰富全面,涵盖 HTML、CSS、JavaScript、Vue、React 等前端技术知识点。特别是对于 JavaScript 这一难点,飞哥进行了重点讲解和深度剖析,引导观众深入理解和掌握 JavaScript 知识体系。 除此之外,飞哥大前端进阶笔记还分享了前端工程师的实际工作经验和应用方法,讲述了企业级前端工程师的职责和要求,为前端工程师的职业发展做出了有益的引导。 总之,飞哥大前端进阶笔记是一系列非常实用的前端技术学习视频,对于初学者和职业前端工程师都有很好的指导作用。以其深刻的剖析和系统的表述,早已赢得了广大前端同胞的支持与好评。 ### 回答3: b站是一家全球知名的视频网站,用户群体广泛。飞哥是一位在b站上分享编程技巧和经验的UP主,他的视频涵盖了各种常用编程语言和开发工具。此外,飞哥还有一系列关于大前端进阶方面的笔记,为想要深入学习前端开发的用户提供了很大的帮助。 在飞哥的大前端进阶笔记中,他详细介绍了前端技术的基本概念和原理。这些笔记主要涉及HTML、CSS、JavaScript、浏览器工作原理、前端框架、前端性能优化等方面。通过这些笔记,用户可以更深入地理解前端技术,从而不断提高自己的技能水平。 此外,飞哥还分享了很多实用的工具和技巧,这些工具和技巧可以极大地提高前端开发的效率。包括VS Code的使用技巧、前端错误调试技巧、前端自动化工具、Webpack等。这些技巧的学习,将使前端开发者更加顺利和高效地完成项目。 总的来说,飞哥的大前端进阶笔记是非常实用和有价值的。无论是前端初学者还是有一定经验的开发者,都可以从中获得很多启迪和帮助。如果你想了解前端技术或者想要在前端开发方面有更多提高,可以去b站上学习飞哥的笔记

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值