Свойство Float не работает, если абзац длиннее одной строки - PullRequest
0 голосов
/ 20 февраля 2019

Я пытался выровнять какой-то элемент <p> слева, используя свойство float: left; css.

Когда текст на одной строке, он правильно выровнен по левому краю, как нарисунок ниже: enter image description here

Но когда текст содержит не менее двух строк, текст больше не выравнивается по левому краю и выравнивается по центру из-за свойства text-align: center;, которое он наследуетиз body: enter image description here

Я знаю, что могу удалить свойство text-align из body, но мне хотелось бы знать, почему это происходит.

Кто-нибудь знает почему?Заранее спасибо.

Вот HTML:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Float test</title>
    <link rel="stylesheet" href="./css/styles.css">
</head>

<body>
        <div class="left-container">
            <div class="left-container-heading">Lorem Ipsum</div>
            <br>
            <br>
            <p>Float left doesn't work anymore since it is more than one line and I would like to know why and how to fix this.
            </p>
        </div>
</body>
</html>

А вот CSS:

body {
    padding-top: 2em;
    text-align: center;
    width: 900px;
    margin: auto;
}

p, h, div {
    font-family: 'Corbel';
}

p {
    margin: 0;
}

.left-container {
    border: 3px solid red;
    border-right: 1px solid red;
    float: left;
    width: 446px;
    height: 100%;
}

.left-container p {
    position: relative;
    float: left;
    margin-left: 5px;
}

.left-container-heading {
    text-decoration: underline;
    font-style: italic;
    font-weight: bold;
    float: left;
    margin-left: 5px;
}

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Поскольку, когда ваш контент занимает 1 строку, ваш элемент p займет очень небольшое пространство, он выровнен по центру, просто вы этого не понимаете, попробуйте добавьте ширину 100% к элементу p , чтобы увидетьесли оно изменилось.

Когда ваш контент состоит из 2 строк, ширина элемента p будет занимать ширину самой длинной строки, а контент по-прежнему будет центрирован, и вы обнаружите, что он выровнен по центру.

0 голосов
/ 20 февраля 2019

Так происходит из-за выравнивания центра на теле.После удаления он плавает влево

body {
    padding-top: 2em;
   
    width: 900px;
    margin: auto;
}

p, h, div {
    font-family: 'Corbel';
}

p {
    margin: 0;
    float:left;
}

.left-container {
    border: 3px solid red;
    border-right: 1px solid red;
    float: left;
    width: 446px;
    height: 100%;
}

.left-container p {
    position: relative;
    float: left;
    margin-left: 5px;
}

.left-container-heading {
    text-decoration: underline;
    font-style: italic;
    font-weight: bold;
    float: left;
    margin-left: 5px;
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Float test</title>
    <link rel="stylesheet" href="./css/styles.css">
</head>

<body>
        <div class="left-container">
            <div class="left-container-heading">Lorem Ipsum</div>
            <br>
            <br>
            <p>Float left doesn't work anymore since it is more than one line and I would like to know why and how to fix this.
            </p>
        </div>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...