vue操作dom元素的3种方法示例


Posted in Javascript onSeptember 20, 2020

1.原生js操作dom

const dom = getElementById(‘box')

2.vue官方方法:ref

vue中的ref是把当前dom元素 “ 抽离出来 ” ,只要通过 this.$refs就可以获取到

< div class=“set” ref=“up”>

.set是我们要操作的dom对象,它的ref是 up

@click=“Alert”

给父元素一个点击事件,

接下来我们来编写这个方法

methods:{
  this.$refs.addAlert.style.display = “block”;
}

CSS还要吗?

那我把代码全粘过来你们自己看吧

<template>
	<div id="app">
		<div class="index-box">
			<!--新增按钮-->
			<input type="button" id="DbManagement-addBtn" @click="showAddAlert" value="新增">
			<!--新增数据源弹框-->
			<div class="addDbSource-alert" ref="addAlert">
				<div class="addAlert-top">
					<!--添加数据源-->
					<input type="button" value="×" class="addAlert-close" @click="closeAddAlert">
				</div>
				<div class="addAlert-content">
					<div style="height: 1000px;"></div>
				</div>
			</div>
		</div>
	</div>
</template>
<script>
	export default {
		name: "Index",
		data(){
			return {
			}
		},
		methods:{
			// 点击新增按钮,弹出新增数据源的弹框
			showAddAlert(){
				this.$refs.addAlert.style.display = "block";
			},
			// 点击 × 关闭新增数据源的弹框
			closeAddAlert(){
				this.$refs.addAlert.style.display = "none";
			},
		},
		created(){
		}
	}
</script>
<style scoped>
	#app{
		width:100%;
		height:100%;
		overflow-y:auto;
	}
 	/* 容器 */
 .index-box{
  width: 100%;
  height: 100%;
  background: #212224;
  display: flex;
 }
 /* 添加数据源按钮 */
 #DbManagement-addBtn {
  width: 100px;
  height: 45px;
  border: none;
  border-radius: 10px;
  background: rgba(29, 211, 211, 1);
  box-shadow: 2px 2px 1px #014378;
  margin-left: 20px;
  margin-top: 17px;
  cursor: pointer;
  font-size: 20px;
 }
 /*新增数据源弹框*/
 .addDbSource-alert{
  position: fixed;
		top:0;left:0;right:0;bottom:0;
		margin:auto;
  width: 4rem;height: 4rem;
  background: #2b2c2f;
  display: none;
 }
 /*新增弹框头部*/
 .addAlert-top{
  width: 100%;
  height: 50px;
  background: #1dd3d3;
  line-height: 50px;
  font-size: 20px;
  box-sizing: border-box;
  padding-left: 20px;
 }
 /*新增弹框关闭*/
 .addAlert-close{
  background: #1dd3d3;
  border: none;
  font-size: 30px;
  cursor: pointer;
  float: right;
  margin-right: 20px;
  margin-top: 5px;
 }
 /*新增弹框内容部分*/
 .addAlert-content{
  width: 100%;
  box-sizing: border-box;
  padding: 0px 30px 20px;
 }
 /* 滚动条效果 */
 /* 设置滚动条的样式 */
 .addAlert-content::-webkit-scrollbar {
  width: 5px;
 }
 /* 滚动槽 */
 .addAlert-content::-webkit-scrollbar-track {
  /* -webkit-box-shadow: inset 0 0 6px rgba(40, 42, 44, 1);
  border-radius: 10px; */
 }
 /* 滚动条滑块 */
 .addAlert-content::-webkit-scrollbar-thumb {
  border-radius: 10px;
  background: rgba(29, 211, 211, 1);
  /* -webkit-box-shadow: inset 0 0 6px rgba(29, 211, 211, 1); */
 }
 .addAlert-content::-webkit-scrollbar-thumb:window-inactive {
  background: rgba(29, 211, 211, 1);
 }
</style>

CSS比正文和脚本加起来都多,如果你能看懂CSS,没理由学不会 ref

还有第三种方法,jQuery 操作dom,看完以后直呼不敢用

3.jQuery操作dom

  只要拿jQuery的选择器,选中相应的dom进行操作就可以了,但是大家都知道jQuery获取元素是查找页面所有,相当于“循环”所有元素直至找到需要的dom,但是vue是单页面的,jQuery获取dom并不只是获取vue当前页面,而是从根路由开始查找所有,当其他页面出现相同的元素,也会被获取到,而且jQuery操作的dom,如果是根据动态获取数据渲染的,那么写在mounted里的操作方法将会失效,必须放到updated里,这样会导致有些操作被执行多遍,所以还是不建议在vue中使用jQuery。

总结

到此这篇关于vue操作dom元素的3种方法示例的文章就介绍到这了,更多相关vue操作dom元素方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
用Jquery实现滚动新闻
Feb 12 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
概述VUE2.0不可忽视的很多变化
Sep 25 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 Javascript
JS排序之快速排序详解
Apr 08 Javascript
原生JS封装animate运动框架的实例
Oct 12 Javascript
详解webpack运行Babel教程
Jun 13 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 Javascript
Vue 封装防刷新考试倒计时组件的实现
Jun 05 Javascript
npm ci命令的基本使用方法
Sep 20 #Javascript
js面试题之异步问题的深入理解
Sep 20 #Javascript
js实现简单的点名器随机色实例代码
Sep 20 #Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 #Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 #Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 #Javascript
vue-cli3 热更新配置操作
Sep 18 #Javascript
You might like
如何利用php+mysql保存和输出文件
2006/10/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
python生成requirements.txt的两种方法
2019/09/18 Python
基于python实现地址和经纬度转换
2020/05/19 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
小学优秀辅导员事迹材料
2014/05/11 职场文书
大学生应聘求职信
2014/05/26 职场文书
水电工岗位职责
2015/02/14 职场文书
升学宴家长致辞
2015/07/27 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python