通过悬停 ElementA 和 ElementB 更改 elementA

Posted

技术标签:

【中文标题】通过悬停 ElementA 和 ElementB 更改 elementA【英文标题】:Change elementA by hovering ElementA and ElementB 【发布时间】:2019-08-02 09:29:23 【问题描述】:

目标:我有 2 x <ul>,我需要通过悬停第一个 <ul> 中的第 5 个孩子或第 5 个孩子来触发第 2 个 ul 中的第 5 个孩子

这是我目前尝试过的:

.images ul 
    list-style: none;


.images ul li 
    display: inline-block;
    height: 100%;
    padding: 0px 10px 0px 10px;
    width: 80px;


.images ul li img 
    width: 100%;


.skills 
    max-width: 640px;
    margin: 0 auto 200px auto;


.skills ul 
    list-style: none;
    text-align: left;
    padding: 0;
    margin: 0;


.skills ul li 
    font-family: "Nunito Sans";
    text-transform: uppercase;
    font-weight: 600;
    padding: 5px 0px;
    margin: 10px 0;


.skills ul li i 
    font-size: 18px;
    color: red;
    padding: 0px 8px 0px 0px;


.html-pct,
.css-pct,
.ps-pct,
.ae-pct,
.pr-pct 
    float: right;



.skills-bar 
    display: block;
    width: 100%;
    height: 2px;
    margin: 5px 0px 0px 0px;
    background: #222;
    box-shadow: 0 0 1px 1px rgba(0,0,0,.6);


.skills-html,
.skills-css,
.skills-ps,
.skills-ae,
.skills-pr 
    float: left;
    background: #1d67f2;
    height: 2px;
    box-shadow: 0 0 6px #1d67f2;


.skills-html 
    width: 0%;
    transition: width 1500ms cubic-bezier(.3,.76,.19,.99);


.skills-css 
    width: 0%;
    transition: width 1500ms cubic-bezier(.3,.76,.19,.99);


.skills-ps 
    width: 0%;
    transition: width 1500ms cubic-bezier(.3,.76,.19,.99);


.skills-ae 
    width: 0%;
    transition: width 1500ms cubic-bezier(.3,.76,.19,.99);


.skills-pr 
    width: 0%;
    transition: width 1500ms cubic-bezier(.3,.76,.19,.99);


.skills ul li:nth-child(1):hover .skills-html 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 90%;


.skills ul li:nth-child(2):hover .skills-css 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 75%;


.skills ul li:nth-child(3):hover .skills-ps 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 60%;


.skills ul li:nth-child(4):hover .skills-ae 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 30%;


.skills ul li:nth-child(5):hover .skills-pr 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 30%;


.images ul li:nth-child(5):hover .skills-pr 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 100%;


.img5:hover .skills-pr 
    background: #1da1f2;
    box-shadow: 0 0 6px #1da1f2;
    width: 100%;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="images">
  <ul>
    <li class="img1">1<img src="https://picsum.photos/200/300?image=1080"</li>
    <li class="img2">2<img src="https://picsum.photos/200/300?image=1080"></li>
    <li class="img3">3<img src="https://picsum.photos/200/300?image=1080"></li>
    <li class="img4">4<img src="https://picsum.photos/200/300?image=1080"></li>
    <li class="img5">5<img src="https://picsum.photos/200/300?image=1080"></li>
  </ul>
</div>

        <div class="skills">
            <ul>
                <li>
                    <span>HTML</span><span class="html-pct">90%</span>
                    <span class="skills-bar"><span class="skills-html"></span></span>
                </li>
                <li>
                    <span>CSS</span><span class="css-pct">75%</span>
                    <span class="skills-bar"><span class="skills-css"></span></span>
                </li>
                <li>
                    <span>Photoshop</span><span class="ps-pct">60%</span>
                    <span class="skills-bar"><span class="skills-ps"></span></span>
                </li>
                <li>
                    <span>After Effects</span><span class="ae-pct">30%</span>
                    <span class="skills-bar"><span class="skills-ae"></span></span> 
                </li>
                <li>
                    <span>Premier</span><span class="pr-pct">30%</span>
                    <span class="skills-bar"><span class="skills-pr"></span></span>
                </li>
            </ul>
        </div>

这里有一个完整的代码:https://codepen.io/anon/pen/moBmgq

第一个有效,通过悬停来触发它。但是两次尝试在另一次上触发它,我就是想不通。

如果您需要更多信息,请随时提问:)

【问题讨论】:

have 2 x是什么意思? 我有 2 个单独的 ul,当我悬停第一个(图像)的第 5 个孩子时,我需要它来触发对第二个 ul(技能)的第 5 个孩子的影响 您只想使用 CSS 吗?为什么不用 JS 或者 jQuery 呢? @Kazie 我认为这在 CSS 中是不可能的,因为您必须参考 悬停元素父元素 才能做到这一点工作...去JS解决方案... 说实话,我不知道如何在 JS 或 Jquery 中做到这一点,我就是你所说的 l 完全绿色 :D 但感谢您让我知道这是不可能的。现在我不必浪费时间尝试在 CSS 中执行此操作:D 【参考方案1】:

我认为您正在寻找的是伪造 pesudo :hover 这是不可能的。我相信您应该考虑添加/删除 css 类。

这里有类似的东西。 Hover Item with JQuery

【讨论】:

以上是关于通过悬停 ElementA 和 ElementB 更改 elementA的主要内容,如果未能解决你的问题,请参考以下文章

如何将混合元素的 xml 序列映射到 go 结构?

Shell中的空格字符串转换

Angular *ngFor 循环遍历数组

Jpbc哈希函数如何实现

优化 Grails 查询

通过 ACF 在悬停时添加和删除默认和悬停背景图像