点击不同div改变背景色、文字颜色(:focus);鼠标放上去显示被隐藏 文字

需求:像电脑里文件管理可以预览文件的排列方式:左侧文件类型;中间文件排列;右边文件预览;(看着分了三列其实是两列)
在这里插入图片描述在这里插入图片描述

原文链接:https://blog.csdn.net/qq_42991509/article/details/106080491(感谢)
css伪类实现点击元素变色的效果,两个伪类是:active, :focus
:active,元素被点击时变色,但颜色在点击后消失;
:focus, 元素被点击后变色,且颜色在点击后不消失;
focus:用于选取获得焦点的元素。仅接收键盘事件或其他用户输入的元素允许 focus的 选择器。
对于div等元素无法接受键盘或其他用户事件,不支持:focus伪类,则可通过增加tabIndex属性使其支持:focus
ps:找了好久,想要div标签包裹内的文字被点击后改变背景颜色,:active不行闪一下就没了,:focus可以实现点新的地方改变背景色;
步骤:1.在你需要改色的div里写个class放你需要的背景色;2.在你需要改色的div里加tabindex这个属性,至于给值1、2、3、4没发现有什么区别。(我都不敢相信这么简单。。。)

<div class="pdfContents" >
            //float: left实现div左右排列
            <div style="width: 40vw;border-right: 1px solid #e8eaec;float: left;">
            //用了elementui把左侧又分左右两列,tabPosition值left就行
              <el-tabs :tab-position="tabPosition" style="height: 200px;">
                <el-tab-pane label="卡布" style="color: black;line-height: 30px;font-size: 17px;display: flex;align-items: center; ">
                //当你文件名太长,这三个overflow: hidden;当设置为 hidden 时,溢出的内容会被裁剪并且不会显示;text-overflow:ellipsis;当文本溢出其容器时,ellipsis 值会在溢出的文本末尾显示省略号(...); white-space:nowrap;nowrap 值防止文本换行;
               //:title将鼠标悬停在元素上时把上面被隐藏的部分显示出来;
                  <div class="colorChange" tabindex="1"  @click="viewSelfFile()" :title="this.selfNameData.fileName">
                    {{this.selfNameData.fileName}}
                  </div>
                </el-tab-pane>
                
                <el-tab-pane label="星星" style="color: black;line-height: 30px;font-size: 17px">
                  <div v-if="supportNameData.length > 0">//因为卡布类型文档至少有一个,但星星类型文档可能没有,所以这里加判断如果没有就无数据
                    <div
                        v-for="item in supportNameData"
                        :key="item.id"
                        @click="viewSupportFile(item)"
                        :title="item.fileName"
                        class="colorChange"
                        tabindex="1">
                      {{ item.fileName }}
                    </div>
                  </div>
                  <div v-else>
                    <span style="color: black;line-height: 30px;font-size: 15px">暂无数据</span>
                  </div>
                </el-tab-pane>
              </el-tabs>
</div>

 <div class="pdfRight" style="position: relative">
              <div class="pages" style="height: calc(100vh - 30px - 30px - 110px);overflow: auto;width:60vw;cursor: pointer;">
                <div class="page" v-for="page in pageTotal" :style="{'width':pageWidth+'px'}">
                  <canvas :id="`pdfCanvas${page}`"></canvas>
                </div>
</div>
data() {
    return {
      tabPosition: 'left',           
    }       
}              
              
              
.pdfContents {
    display: flex;
    height: calc(100vh - 30px - 30px - 110px);
    width: 100%;
    position: relative;
    overflow: hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
.colorChange:focus {
  //background-color: #e8eaec;
  color: #409EFF;
}  
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值