可伸缩自适应的页面头部,屏幕适应范围更广泛

效果如下:

代码如下:

<template>
<div class="site-header">
<div class="logo"><img src="@/assets/icons/logo.png" alt=""></div>
<nav class="title">
<!--汉堡按钮图标-->
<em class="iconfont icon-justify" @click.stop="toggle('title')"></em>
<ul ref="title">
<li class="active">
<a href="#">{{ 首页}}</a>
</li>
<li>
<a href="#">{{ 交易中心}}</a>
</li>
<li>
<a href="#">{{ 用户中心}}</a>
</li>
<li>
<a href="#">{{ 新闻 }}</a>
</li>
<li>
<a href="#">{{ 关于我们 }}</a>
</li>
</ul>
</nav>
<div class="aboutlogin">
<!--用户头像图标-->
<em class="iconfont icon-user" @click.stop="toggle('aboutlogin')"></em>
<ul ref="aboutlogin">
<li class="active">
<a href="#">{{ 登录 }}</a>
</li>
<li>
<a href="#">{{ 注册}}</a>
</li>
<li v-if="false"><a href="javascript:;">{{ 欢迎 }}</a>&nbsp;&nbsp;<span>{{ 555 }}</span></li>
<li v-if="false">
<a href="javascript:;">{{退出}}</a>
</li>
</ul>
</div>
</div>
</template> <script>
export default {
computed: {
clickRootNum () {
return this.$store.state.system.clickRootNum
}
},
methods: {
toggle (ref) {
if (ref === 'title') {
this.$refs.aboutlogin.classList.remove('d-show')
} else {
this.$refs.title.classList.remove('d-show')
}
const ele = this.$refs[ref]
const classname = ele.className
if (classname.indexOf('d-show') > -1) {
ele.classList.remove('d-show')
} else {
ele.classList.add('d-show')
}
}
},
watch: {
'clickRootNum' () { // 点击页面任意位置关闭下拉列表,需要vuex的状态来配合
this.$refs.title.classList.remove('d-show')
this.$refs.aboutlogin.classList.remove('d-show')
}
}
}
</script> <style scoped lang="scss">
/*定义的一些主题颜色*/
@import "../../assets/css/variate"; .d-show {display: block!important;}
@media screen and (min-width: 781px) {
.site-header{
height: 72px;
display: flex;
flex-direction: row;
justify-content: space-between;
border-bottom: 1px solid $themecolor;
background-color: #fff;
align-items: center;
.logo{
margin-left: 10px;
height: 52px;
}
.aboutlogin{
width: 250px;
height: 100%;
margin-right: 10px;
.icon-user {
display: none;
}
ul {
display: flex!important;
flex-direction: row;
justify-content: space-around;
li{
display: inline-block;
line-height: 72px;
font-size: 14px;
cursor: pointer;
color: #7a7a7a;
&:hover>a {
color: $themecolor;
}
a {
color: #7a7a7a;
display: inline-block;
&:active{
transform: translateY(1px);
}
}
&.active a{
color: $themehover;
font-weight: bold;
}
}
}
}
.title {
width: 600px;
margin: 0 20px;
.icon-justify {
display: none;
}
ul {
display: flex!important;
flex-direction: row;
justify-content: space-between;
li {
display: inline-block;
line-height: 72px;
&:hover a{
background-color: $themecolor;
padding: 2px 5px;
color: #fff;
}
a{
color: $themecolor;
font-size: 18px;
padding: 2px 5px;
&:active {
background-color: $themehover;
}
}
&.active a{
background-color: $themecolor;
color: #fff;
}
}
}
}
}
}
@media screen and (max-width: 780px) {
.site-header{
height: 72px;
border-bottom: 1px solid $themecolor;
background-color: #fff;
position: relative;
.logo{
position: absolute;
top: 0;
bottom: 0;
margin: auto 0;
right: 10px;
height: 52px;
}
.aboutlogin{
width: 60px;
height: 100%;
margin-right: 10px;
position: absolute;
left: 60px;
.icon-user {
font-size: 32px;
color: #999;
line-height: 72px;
display: inline-block;
cursor: pointer;
}
ul {
display: none;
background-color: #fff;
position: absolute;
left: -10px;
top: 71px;
width: 90px;
li{
line-height: 36px;
font-size: 14px;
cursor: pointer;
padding-left: 10px;
color: #7a7a7a;
&:hover>a {
color: $themecolor;
}
a {
color: #7a7a7a;
display: inline-block;
&:active{
transform: translateY(1px);
}
}
}
}
}
.title {
width: 60px;
position: absolute;
left: 10px;
.icon-justify {
font-size: 32px;
line-height: 72px;
display: inline-block;
cursor: pointer;
}
ul {
display: none;
position: absolute;
left: -10px;
top: 71px;
width: 120px;
background-color: #fff;
li {
line-height: 36px;
padding-left: 6px;
&:hover a{
background-color: $themecolor;
color: #fff;
}
a{
color: $themecolor;
padding: 0 6px;
font-size: 18px;
&:active {
background-color: $themehover;
}
}
&.active a{
background-color: $themecolor;
color: #fff;
}
}
}
}
}
}
</style>

vue实用组件——页面公共头部的更多相关文章

  1. vue实用组件——圆环百分比进度条

    因为所在公司临近年底突然宣布Game Over,导致我等小码农又要踏上一个艰辛的求职道路了.才眨眼功夫,年就过完了,快乐的时光总是很匆忙呀. 开年的第一个面试,面试官问我会不会自己写一个圆环进图圈,这 ...

  2. vue实用组件——表格

    之前用了一下vue-bootstrap,感觉里面的表格组件特别好用,但是如果仅仅为了使用表格就引入bootstrap,似乎有点不划算.所以自己就试着实现了一下bootstrap里面表格的部分功能,目前 ...

  3. vue实现部分页面导入底部 vue配置公用头部、底部,可控制显示隐藏

    vue实现部分页面导入底部 vue配置公用头部.底部,可控制显示隐藏 在app.vue文件里引入公共的header 和 footer header 和 footer 默认显示,例如某个页面不需要显示h ...

  4. URL不变的情况下,最实用的vue刷新当前页面,provide / inject 组合 方式实现vue页面刷新

    原文:https://blog.csdn.net/Dream_xun/article/details/83024487 其他参考:https://blog.csdn.net/liyunkun888/a ...

  5. 17.组件页面应用和vue项目生成

    基本示例 这里有一个 Vue 组件的示例: // 定义一个名为 button-counter 的新组件 Vue.component('button-counter', { data: function ...

  6. 在webpack中配置.vue组件页面的解析

    1. 运行`cnpm i vue -S`将vue安装为运行依赖: 2. 运行`cnpm i vue-loader vue-template-compiler -D`将解析转换vue的包安装为开发依赖: ...

  7. vue父组件获取子组件页面的数组 以城市三级联动为例

    父组件调用子组件 <Cselect ref="registerAddress"></Cselect> import Cselect from '../../ ...

  8. 16款优秀的Vue UI组件库推荐

    16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...

  9. Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...

随机推荐

  1. AngularJS ngTemplate寄宿方式 模板缓存 $templateCache

    AngularJS的指令中经常定义模板(template或templateUrl),可以选择将Html模板直接寄宿在WEB容器中,如Tomcat.IIS.Nginx.NodeJs Express,也可 ...

  2. WPF Bitmap转成Imagesource的性能优化

    之前有个需求是在WPF中生成二维码,用的是QRCoder. QRCoder生成的是Bitmap,在wpf中需要转换成ImageSource才能显示. 之前的转换方式是: IntPtr hBitmap ...

  3. 记录一次BUG修复-Entity Framwork SaveChanges()失效

    目录 一. 前言 二.问题背景 三.问题描述 四.问题解决步骤 六.总结 一. 前言 这是笔者在参与一个小型项目开发时所遇到的一个BUG,因为项目经验不足对Entity Framwork框架认识不足导 ...

  4. python爬虫实践教学

    i春秋作家:Mochazz 一.前言 这篇文章之前是给新人培训时用的,大家觉的挺好理解的,所以就分享出来,与大家一起学习.如果你学过一些python,想用它做些什么又没有方向,不妨试试完成下面几个案例 ...

  5. 改变您的HTTP服务器的缺省banner

    (以下方法仅针对 IIS Asp.net) 服务器扫描发现漏洞,其中一个是: 可通过HTTP获取远端WWW服务信息 [Microsoft-IIS/8.5] 漏洞描述 本插件检测远端HTTP Serve ...

  6. mysql数据库崩溃:InnoDB: Database page corruption on disk or a failed

    修改mysql配置文件my.cnf,添加 innodb_force_recovery = 6 innodb_purge_thread = 0 重启mysql 这时只可以执行select,create, ...

  7. 01-Python的基础知识2

    - Python变量 - 变量就是重复使用的一个量,或者一个代号. - 变量的命名规则: - 必须以下划线或者字母开头,后面接任意数量下划线.字母.或数字. - 4man , 5for 是不可以的 - ...

  8. maven build的常用生命周期

    常用的maven build goals: validate - validate the project is correct and all necessary information is av ...

  9. linux shell使用别名,切换当前目录

    别名alias 别名就是一种快捷方式,以省去用户输入一长串命令序列的麻烦. 别名使用alias命令 比如 alias cp='cp -i' alias l.='ls -d .* --color=tty ...

  10. Unity C# .Net List 优化点

    Unity C# .Net List 优化点 已知长度 则初始化指定长度 调用多次Remove会导致内存浪费 调用TrimExcess释放多余内存 List代码实现原理 使用数组保存泛型数据 代码 L ...