Как изменить границу изображения и текст одновременно при наведении курсора?

#javascript #html #css #hover

Вопрос:

Я создаю клон Netflix просто как личный проект.

В разделе «Профили Netflix» при наведении курсора выделяются граница вокруг изображения и имя пользователя.

Когда я пытаюсь использовать свой код при наведении курсора, граница и текст меняются отдельно. Я пробовал несколько способов в течение чуть более часа, но безуспешно. Я знаю, что мне не хватает чего-то упрощенного и, вероятно, чрезмерно продуманного, но я не уверен, как подойти к этому, создаю ли я функцию JavaScript, возможно, или в CSS. (Я борюсь с добавлением JS в свои проекты, поэтому я создаю этот клон!)?

Советы или подсказки были бы потрясающими, так как я все еще пытаюсь решить эту проблему

 body, html {
    height: 100%;
    margin: 0px;
    margin-top: -11px;
    margin-left: 22.5px;
    padding: 0px;
    color: white;
    font-family: 'Roboto', sans-serif;
    background-color: rgb(17, 17, 17);
}

.container {
    text-align: center;
    position: relative;
    top: 10%;
}

/* 
----------------
PROFILES SECTION
----------------
*/

.profiles {
    margin: 20px;
    padding: 20px;
    display: flex;
    justify-content: center;
}


.prfImg {
    margin: -6px;
    padding: 12px;
}

.prfImg > img {
    margin: 2px;
    padding: 2px;
    border: 0.5px solid rgba(255, 255, 255, 0.061);
    border-radius: 3px;
}

.prfImg > img:hover {
    color: rgba(255, 255, 255, 0.787);
    border: 3px solid rgba(255, 255, 255, 0.787);
    border-radius: 3px;
}

#user {
    font-size: 25px;
    color: grey;
}

/* 
----------------
BUTTON
----------------
*/

.btn {
    margin: 30px;
    padding: 30px;
    text-align: center;
}

button {
    margin-top: 30px;
    font-size: 22px; 
    color: grey;
    padding: 10px;
    background-color: transparent;
    border: 1.5px solid grey;
}

button:hover {
    color: rgba(255, 255, 255, 0.863);
    border: 1.5px solid rgba(255, 255, 255, 0.863);
} 
 <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="profiles.css">
    <!-- google font -->
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300amp;display=swap" rel="stylesheet">
    <title>NETFLIX - Profiles</title>
</head>

<body>
    <header>
        <img src="Img_d.profiles/netflix_logo.png" alt="netflix logo TM" width="99.2px">
    </header>

    <div class="container">
        <div class="header-text">
            <h1 style="font-size: 50px;">Who's watching?</h1>
        </div>
        <div class="profiles">
            <div class="prfImg">
                <img src="Img_d.profiles/profile_one.png" alt="Profile One" width="75%" label="hello">
                <p class="prfImg" id="user">A name</p>
            </div>
            <div class="prfImg">
                <img src="Img_d.profiles/profile_two.png" alt="Profile Two" width="75%">
                <p class="prfImg" id="user">A name</p>
            </div>
            <div class="prfImg">
                <img src="Img_d.profiles/profile_three.png" alt="Profile Three" width="75%">
                <p class="prfImg" id="user">A name</p>
            </div>
            <div class="prfImg">
                <img src="Img_d.profiles/profile_four.png" alt="Profile Foud" width="75%">
                <p class="prfImg" id="user">A name</p>
            </div>
        </div>
        <!-- button class -->
    </div>

    <div class="btn">
        <button>Manage Profiles</button>
    </div>

</body>

</html> 

введите описание изображения здесь сам по себе!*

Комментарии:

1. Для меня это, кажется, отлично работает с фрагментом кода, которым вы поделились. Разве это не работает с реальными изображениями (фрагмент кода вместо этого был с текстом alt)?

Ответ №1:

Вы можете поместить событие наведения в родительский раздел.

Измените это:

 .prfImg > img:hover {
    color: rgba(255, 255, 255, 0.787);
    border: 3px solid rgba(255, 255, 255, 0.787);
    border-radius: 3px;
}
 

к этому

 .prfImg:hover {
    color: rgba(255, 255, 255, 0.787);
    border: 3px solid rgba(255, 255, 255, 0.787);
    border-radius: 3px;
}
 

Комментарии:

1. Я попытался, но он завис на границе между изображением и текстом. Я пытаюсь оглянуться назад и посмотреть, может быть, мой HTML был сделан неправильно, что привело к искажению кода CSS?

2. @ZiPage измените имя класса p на что-то другое. Нравится prfImg-text