Как разместить два изображения рядом, не меняя их высоту и ширину? - PullRequest
1 голос
/ 07 июня 2019

Для школьного проекта я пытаюсь воссоздать это:

enter image description here

Первое изображение 501x850, а второе изображение 1050x425.

HTML

  <section class="clearfix">
    <img class="eurovan" src="assets/image-1.jpeg" alt="A cyan coloured Eurovan driving on a winding road through the mountains">
    <img class="boat" src="assets/image-2.jpeg" alt="An overhead shot of a boat coming into shore from the ocean">
    <div class="feature">
      <h3>Feature</h3>
      <h2>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diamon nonummy nibh euismod tincidunt ut laoreet dolore magna.</h2>
      <a href="#" class="button">Read More</a>
    </div>
  </section>

CSS

.button {
  background-color: #16D6D1;
  padding: .9rem 2rem;
  border-radius: 6px;
}

a {
  text-decoration: none;
  text-transform: uppercase;
  color: inherit;
  size: 1.9rem;
  font-weight: 700;
}

.eurovan {
  width: 35%;
}

.boat {
  width: 65%;
  float: right;
}

.feature {
  width: 65%;
  background-color: #F6F8FA;
  float: right;
}

Дизайн, который мне нужно воссоздать, имеет изображение с классом boat и eurovan с первымполовина высоты.Когда я создаю eurovan изображения width: 65% и boat width: 35%, он меняет высоту, и boat не в два раза меньше высоты eurovan, как это было изначально.

Ответы [ 4 ]

1 голос
/ 07 июня 2019

---------

РЕДАКТИРОВАТЬ: Я думаю, что мой ответ в порядке, но это https://stackoverflow.com/a/56487541/10712525 (ответ @showdev) отлично.

---------

Посмотрите результат

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

Здесь код:

<html>
    <head>
        <style>
            .button {
                background-color: #16D6D1;
                padding: .9rem 2rem;
                border-radius: 6px;
                display: inline-block; /* New line */
            }

            a {
                text-decoration: none;
                text-transform: uppercase;
                color: inherit;
                size: 1.9rem;
                font-weight: 700;
            }

            .eurovan {
                width: 100%; /* 100% width, keep it, dont delete or change for "auto" or 35% */
            }

            .boat {
                width: 100%; /* 100% width, keep it, dont delete or change for "auto" or 65% */
                /* delete float: right, dont need it*/
            }

            .feature {
                width: 65%;
                /* delete background-color: #F6F8FA, dont need it */
                /* delete float: right, dont need it */

                text-align: center; /* New line */
                margin: auto; /* New line */
                padding: 50px; /* New line */
            }

            /* add content to this class */
            .left {
                display: inline-block;
                position: absolute;
                width: 65%;
                margin: 20px;
            }

            /* add content to this class */
            .right {
                display: inline-block;
                width: 35%;
                margin: 20px;
            }

            /* add content to this class */
            .clearfix {
                position: relative;
            }

            /* New class, only for center the content in the middle */
            .main {
                max-width: 70%; 
                margin: 0 auto;
            }
        </style>
    </head>
    <body>

        <!-- New main div -->
        <main class="main">

            <section class="clearfix">

                <!-- separate right left content in divs -->
                <div class="right">
                    <img class="eurovan" src="assets/image-1.jpeg" alt="A cyan coloured Eurovan driving on a winding road through the mountains">
                </div>
                <div class="left">
                    <img class="boat" src="assets/image-2.jpeg" alt="An overhead shot of a boat coming into shore from the ocean">
                    <div class="feature">
                        <h3>Feature</h3>
                        <h2>lorem ipsum dolor sit amet, consectetur</h2>
                        <a href="#" class="button">Read More</a>
                    </div>
                </div>

            </section>
        </main>
    </body>
</html>

Для рассмотрения:

Заполнение /атрибуты поля, которые я добавил в классы объектов, левый и правый, предназначены только для дальнейшего разделения элементов.Это не обязательно для вашей цели, но идея стилизации состоит в том, чтобы сделать все красивым, а держать предметы отделенными друг от друга, чтобы все выглядело лучше.То же самое для основного div, вы можете удалить его, если хотите, или изменить ширину с 70% до 80% или 50%.

1 голос
/ 07 июня 2019

Я рекомендую обернуть два элемента, на которые вы хотите повлиять в изображениях ваших дел, в родительский div.

<div class="parent_div">
<img class="eurovan" src="assets/image-1.jpeg" alt="A cyan coloured Eurovan driving on a winding road through the mountains">
<img class="boat" src="assets/image-2.jpeg" alt="An overhead shot of a boat coming into shore from the ocean">
</div>

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

.parent_div{
 display: grid;
 grid-template-columns: 1fr 1fr;
}

Вы можете проверить документацию сетки, чтобы увидеть другие варианты, которые у вас есть.

1 голос
/ 07 июня 2019

С помощью этого кода вы можете получить то, что ищете, я создал контейнер объектов и использовал background-images вместо imgs для большего контроля CSS

<section class="clearfix">
    <div class="eurovan"></div>
    <div class="feature-container">
        <div class="boat"></div>
        <div class="feature">
            <h3>Feature</h3>
            <h2>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diamon nonummy nibh euismod tincidunt ut laoreet dolore magna.</h2>
            <a href="#" class="button">Read More</a>
        </div>
    </div>
</section>

А это CSS

* {
    margin: 0;
    border: 0;
    padding: 0;
}

.button {
    background-color: #16D6D1;
    padding: .9rem 2rem;
    border-radius: 6px;
}

a {
    text-decoration: none;
    text-transform: uppercase;
    color: inherit;
    size: 1.9rem;
    font-weight: 700;
}

.eurovan {
    width: 33%;
    margin-right: 2%;
    height: 850px;
    float: left;
    background-image: url('../images/eurovan.jpg');
    background-size: cover;
    display: block;
}

.feature-container {
    width: 65%;
    float: left;
    height: 850px;
}

.boat {
    width: 100%;
    height: 50%;
    background-image: url('../images/boat.jpg');
    background-size: cover;
    display: block;
}

.feature {
    width: 100%;
    height: 50%;
    text-align: center;
    background-color: lightgrey;
}
1 голос
/ 07 июня 2019

Если вы не масштабируете ширину двух изображений пропорционально, то их высота также не будет пропорционально масштабироваться. Тем не менее, вы можете рассчитать соответствующие проценты:

Общая ширина двух собственных изображений:

501px + 1050px = 1551px

Чтобы добавить промежуток между изображениями в 3%, рассчитайте 3% от общей ширины:

1551px * 3% = 46,53px

Добавьте это значение к общей ширине:

1551 пикселей + 46,53 пикселей = 1597,53 пикселей

Рассчитать процент каждого изображения от общей ширины:

501px / 1597.53px = ~ 31.36 %
1050px / 1597.53px = ~ 65.73 %

Изображения будут масштабироваться пропорционально друг другу, если вы используете эти проценты.

body {
  margin: 0;
}

.eurovan {
  width: 31.36%;
  float: left;
}

.boat {
  width: 65.73%;
  float: right;
}

.feature {
  width: 65.73%;
  background-color: #F6F8FA;
  float: right;
  padding: 1.5em;
  /* margin: 3% 0 0; */
  box-sizing: border-box;
  font-size: 10px;
  font-family: sans-serif;
  text-align: center;
}

.feature h3 {
  margin: 0 0 1em;
  font-size: 1.2em;
}

.feature h2 {
  font-size: 1.3em;
  margin: 0 0 1.2em;
}

.button {
  background-color: #16D6D1;
  padding: 0.9em 2em;
  border-radius: .5em;
  display: inline-block;
}

a {
  text-decoration: none;
  text-transform: uppercase;
  color: inherit;
}
<section class="clearfix">
  <img class="eurovan" src="https://picsum.photos/id/236/501/850" alt="A cyan coloured Eurovan driving on a winding road through the mountains">
  <img class="boat" src="https://picsum.photos/id/238/1050/425" alt="An overhead shot of a boat coming into shore from the ocean">
  <div class="feature">
    <h3>Feature</h3>
    <h2>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diamon nonummy nibh euismod tincidunt ut laoreet dolore magna.</h2>
    <a href="#" class="button">Read More</a>
  </div>
</section>

Ваш макет не содержит пробелов между вторым изображением и элементом элемента. Но если вы захотите, вы можете добавить 3% margin-top к элементу объекта, чтобы получить вертикальный зазор того же размера, что и зазор между изображениями. Это основано на том факте, что процентное поле рассчитывается из ширины содержащего блока .


Эту же стратегию можно использовать для других макетов, таких как flexbox или grid . Это может упростить выравнивание нижней части функциональной линии и нижней части первого изображения (в зависимости от объема содержимого функции).

Вот демонстрация:

body {
  margin: 0;
}

section {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

#col1 {
  flex: 0 0 31.36%;
}

#col2 {
  flex: 0 0 65.73%;
  display: flex;
  flex-direction: column;
}

img {
  display: block;
  width: 100%;
}

.feature {
  flex: 1 0 auto;
  background-color: #F6F8FA;
  padding: 1.5em;
  /*margin-top: 4.56%;*/
  /* this is (3% / 65.73%) */
  box-sizing: border-box;
  font-size: 10px;
  font-family: sans-serif;
  display:flex;
  flex-direction:column;
  justify-content:space-around;
  align-items:center;
  text-align:center;
}

.feature h3 {
  margin: 0;
  font-size: 1.2em;
}

.feature h2 {
  margin:0;
  font-size: 1.3em;
}

.button {
  background-color: #16D6D1;
  padding: 0.9em 2em;
  border-radius: .5em;
  display: inline-block;
  font-weight:bold;
}

a {
  text-decoration: none;
  text-transform: uppercase;
  color: inherit;
}
<section>
  <div id="col1">
    <img src="https://picsum.photos/id/236/501/850" alt="A cyan coloured Eurovan driving on a winding road through the mountains">
  </div>
  <div id="col2">
    <img src="https://picsum.photos/id/238/1050/425" alt="An overhead shot of a boat coming into shore from the ocean">
    <div class="feature">
      <h3>Feature</h3>
      <h2>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diamon nonummy nibh euismod tincidunt.</h2>
      <a href="#" class="button">Read More</a>
    </div>
  </div>
</section>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...