Когда я увеличиваю размер элемента box, поле под ним уменьшается как 300px - PullRequest
0 голосов
/ 01 мая 2020
/* Add a black background color to the top navigation */
body {
    margin: 0px;
    background-color: rgb(89, 90, 74);
}
.menu {
    background-color: rgb(54,54,53);
    overflow: hidden;
    width: 100%;
    padding-bottom: 10px;
    padding-top: 10px;
    position: fixed;
    z-index: 4;
}

.menu a {
    font-size: 30px;
    font-family: Arial, sans-serif;
    color: rgb(176, 254, 118);
    text-decoration: none;
    margin-left: 15px;
}

.container {
    width: 90%;
    margin-left: 8%;
    margin-right: 8%;
    overflow: hidden;
    margin-top: 70px;
    padding: 30px 0px;
    position: absolute;
}
.container div {
    display: block;
    position: relative;
    margin-left: 15px;
    margin-bottom: 15px;
    width: 250px;
    height: 450px;
    overflow: hidden;
    background-color: rgb(255,255,255);
    color: rgb(255,255,255);
    float: left;
    background-color: rgb(176, 254, 118);
    border-radius: 15px;
}


.ahover:hover{
    color: rgb(255,255,255);
    transition: 0.6s;
}
.ahover:not(:hover){
    color: rgb(176, 254, 118);
    transition: 0.6s;
}
#sellbox {
    color: rgb(54,54,53)

}
#sellbox ul {
    list-style: none
}
#sellbox #element {
    font-size: 25px;
    text-align: center;
    font-family: Arial, Helvetica, sans-serif;
    margin-top: 0px;
    margin-bottom: 3px;
}
#sellbox #title {
    text-align: center;
    font-size: 30px;
    margin-top: 4px;
    font-family: Arial, Helvetica, sans-serif;
}
#sellbox:hover{
    padding: 3px;
    box-shadow: rgb(54,54,53) 3px;
}
#sellbox:not(:hover){
    padding: 0px;
    box-shadow: none;
}

Моя проблема в том, что окно с надписью «Купи меня» при наведении на него увеличивает размер, но все остальные окна перемещаются, я пытался проверить уже существующие вопросы по этому типу, но я не нашел свой ответ Не могли бы вы создать новую скрипку с работающей и сказать мне, в чем была проблема, спасибо. Это css, также здесь скрипка https://jsfiddle.net/t4r3L2v8/

Ответы [ 4 ]

1 голос
/ 01 мая 2020

Основная причина этого заключается в том, что вы используете отступы для выделения вашего элемента, общий размер вашего блока рассчитывается путем суммирования ширины содержимого, высоты содержимого, отступов и границ (ширина содержимого + отступы влево + отступы вправо + border-left + border-right) (высота содержимого + padding-top + padding-bottom + border-top + border-bottom), поэтому при увеличении отступа поля его размер будет увеличиваться, и в результате он может pu sh соседние ящики.
Отметьте блочная модель , чтобы понять больше enter image description here

Решение:

Один из способов решить эту проблему - определить свой box-sizing для border-box, это предотвратит увеличение общего размера поля за счет уменьшения размера содержимого относительно границы и отступов. Было бы хорошо, если бы вы добавили это свойство к каждому элементу на своей странице, добавив следующий css код:

*{
  box-sizing: border-box;
}

Решение вашей проблемы:

Один из способов выделить ваш элемент - используя transform: scale (value), scale () изменит размер вашего элемента, как показано в документации (увеличьте, если значение> 1, уменьшите, если значение <1), ваш код должен выглядеть следующим образом, не стесняйтесь изменять значение, чтобы понять, как это работает: </p>

#sellbox:hover{
    transform: scale(1.03);
    box-shadow: rgb(54,54,53) 3px;
}

/* Add a black background color to the top navigation */
*{
  box-sizing: border-box;
}
body {
    margin: 0px;
    background-color: rgb(89, 90, 74);
}
.menu {
    background-color: rgb(54,54,53);
    overflow: hidden;
    width: 100%;
    padding-bottom: 10px;
    padding-top: 10px;
    position: fixed;
    z-index: 4;
}

.menu a {
    font-size: 30px;
    font-family: Arial, sans-serif;
    color: rgb(176, 254, 118);
    text-decoration: none;
    margin-left: 15px;
}

.container {
    width: 90%;
    margin-left: 8%;
    margin-right: 8%;
    overflow: hidden;
    margin-top: 70px;
    padding: 30px 0px;
    position: absolute;
}
.container div {
    display: block;
    position: relative;
    margin-left: 15px;
    margin-bottom: 15px;
    width: 250px;
    height: 450px;
    overflow: hidden;
    background-color: rgb(255,255,255);
    color: rgb(255,255,255);
    float: left;
    background-color: rgb(176, 254, 118);
    border-radius: 15px;
}


.ahover:hover{
    color: rgb(255,255,255);
    transition: 0.6s;
}
.ahover:not(:hover){
    color: rgb(176, 254, 118);
    transition: 0.6s;
}
#sellbox {
    color: rgb(54,54,53)
    
}
#sellbox ul {
    list-style: none
}
#sellbox #element {
    font-size: 25px;
    text-align: center;
    font-family: Arial, Helvetica, sans-serif;
    margin-top: 0px;
    margin-bottom: 3px;
}
#sellbox #title {
    text-align: center;
    font-size: 30px;
    margin-top: 4px;
    font-family: Arial, Helvetica, sans-serif;
}
#sellbox:hover{
    transform: scale(1.03);
    box-shadow: rgb(54,54,53) 3px;
}
#sellbox:not(:hover){
    padding: 0px;
    box-shadow: none;
}
<html>
    <head>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="menu">
            <a class="ahover" href="#home">
                Home
            </a>
            <a class="ahover" href="#contact">
                Contact us
            </a>
            <a class="ahover" style="margin-left: 78%;" href="#signup">Sign up</a>
        </div> 
        <div class="container">

            <div id="sellbox">
                <p id="title">Buy me now</p>

                <p id="element">whew</p>
                <p id="element">whew</p>
                <p id="element">whew</p>
                <p id="element">whew</p>
                <p id="element">whew</p>
                <p id="element">whew</p>
                <p id="element">whew</p>

            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            <div>
                
            </div>
            

        </div>
    </body>
</html>
1 голос
/ 01 мая 2020

Изменить

#sellbox:hover{
    padding: 3px;
    box-shadow: rgb(54,54,53) 3px;
}
#sellbox:not(:hover){
    padding: 0px;
    box-shadow: none;
}

на

#sellbox{
    padding: 0;
}
#sellbox:hover{
    box-shadow: 3px 3px 3px rgb(54,54,53);
}

Нет необходимости в :not(:hover), и, как уже сказал другой ответ, padding: 3px делает элемент визуально настолько большим, что он занимает место в следующей строке.

Также что-то не так с вашим синтаксисом box-shadow. Читайте о box-shadow на CSS Трюки - Box Shadow

1 голос
/ 01 мая 2020

Элемент, плавающий там, где он сначала получает пробел, и хочет получить больше верхней и левой пробелов. когда вы увеличиваете заполнение, это немного занимает дополнительное место, из которого прерывают следующий поток.

Замените весь ваш css на этот -

   /* Add a black background color to the top navigation */
    body {
        margin: 0px;
        background-color: rgb(89, 90, 74);
    }
    .menu {
        background-color: rgb(54,54,53);
        overflow: hidden;
        width: 100%;
        padding-bottom: 10px;
        padding-top: 10px;
        position: fixed;
        z-index: 4;
    }

    .menu a {
        font-size: 30px;
        font-family: Arial, sans-serif;
        color: rgb(176, 254, 118);
        text-decoration: none;
        margin-left: 15px;
    }

    .container {
        width: 90%;
        margin-left: 8%;
        margin-right: 8%;
        overflow: hidden;
        margin-top: 70px;
        padding: 30px 0px;
        position: absolute;
    }
    .container div {
        display: block;
        position: relative;
        margin-left: 15px;
        margin-bottom: 15px;
        width: 250px;
        height: 450px;
        overflow: hidden;
        background-color: rgb(255,255,255);
        color: rgb(255,255,255);
        float: left;
        background-color: rgb(176, 254, 118);
        border-radius: 15px;
    }


    .ahover:hover{
        color: rgb(255,255,255);
        transition: 0.6s;
    }
    .ahover:not(:hover){
        color: rgb(176, 254, 118);
        transition: 0.6s;
    }
    #sellbox {
        color: rgb(54,54,53);
        transition: .5s;
    }
    #sellbox ul {
        list-style: none
    }
    #sellbox #element {
        font-size: 25px;
        text-align: center;
        font-family: Arial, Helvetica, sans-serif;
        margin-top: 0px;
        margin-bottom: 3px;
    }
    #sellbox #title {
        text-align: center;
        font-size: 30px;
        margin-top: 4px;
        font-family: Arial, Helvetica, sans-serif;
    }
    #sellbox:hover{
        transform: scale(1.03);
        box-shadow: 0 0 5px rgb(54,54,53);
    }
    #sellbox:not(:hover){
        padding: 0px;
        box-shadow: none;
    }
0 голосов
/ 01 мая 2020

Ящики перемещаются, потому что вы заполняете их, когда наводите на них курсор, и это приводит к увеличению размера элемента, и освобождая место для этого размера, он толкает элементы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...