Как использовать изображение внутри div без перемещения других элементов - PullRequest
0 голосов
/ 11 февраля 2019

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

:root {
  --main-color: #0077be;
}

body {
  font-family: "Open Sans", sans-serif;
  text-align: right;
}

ul,
li {
  list-style: none;
  padding: 0;
  margin: 0;
}

div {
  border: 1px solid gray;
}

.screen {
  padding: 100px;
  background-color: #ededed;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.wrapper {
  width: 1200px;
  height: 450px;
  background-color: #fff;
  display: flex;
  flex-direction: column;
}

.section-title {
  flex-grow: 1;
}

.news-conainer {
  flex-grow: 11;
  display: flex;
  flex-direction: column;
  padding: 17px;
}

.main-news {
  flex-grow: 11;
  display: flex;
  flex-direction: row-reverse;
}

.foot-news {
  flex-grow: 1;
}

.right {
  flex-grow: 7;
  display: flex;
  flex-direction: row-reverse;
  margin-left: 20px;
}

.left {
  flex-grow: 10;
  display: flex;
  flex-direction: column;
}

.img {
  max-height: 100%;
  overflow: hidden;
}

.img img {
  max-width: 100%;
  min-height: 100%;
}

.info {
  flex-grow: 1;
}

.left-news {
  flex-grow: 1;
  display: flex;
  flex-direction: row-reverse;
}

.left-news:nth-child(2) {
  margin: 10px 0;
}

.left-news-img {
  flex-grow: 1.5;
  background-color: yellow;
}

.left-news-info {
  flex-grow: 3;
}
<div class="screen">
      <div class="wrapper">
        <div class="section-title">title</div>
        <div class="news-conainer">
          <div class="main-news">
            <div class="right">
              <div class="img">
                <img src="./new1.JPG" alt="" />
              </div>
              <div class="info">info</div>
            </div>

            <div class="left">
              <div class="left-news">
                <div class="left-news-img">
                <img src="./new1.JPG" alt="" />
                </div>
                <div class="left-news-info"></div>
              </div>
              <div class="left-news">
                <div class="left-news-img">
                <img src="./new1.JPG" alt="" />
                </div>
                <div class="left-news-info"></div>
              </div>
              <div class="left-news">
                <div class="left-news-img">
                <img src="./new1.JPG" alt="" />
                </div>
                <div class="left-news-info"></div>
              </div>
            </div>
          </div>
          <div class="foot-news"></div>
        </div>
      </div>
    </div>

Мне нужно в желтых элементах div добавить тег imageбез разрушения других размеров и их позиций

Спасибо!

enter image description here

результат с добавлением

.left-news-img {
max-width: 30%;
}
.left-news-img > img {
  max-width: 100%;
   }

enter image description here

1 Ответ

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

вы должны использовать max-width

.left-news-img {
    max-width: 30%;
}
.left-news-img > img {
    max-width: 100%;
}

:root {
  --main-color: #0077be;
}

body {
  font-family: "Open Sans", sans-serif;
  text-align: right;
}

ul,
li {
  list-style: none;
  padding: 0;
  margin: 0;
}

div {
  border: 1px solid gray;
}

.screen {
  padding: 100px;
  background-color: #ededed;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.wrapper {
  width: 1200px;
  height: 450px;
  background-color: #fff;
  display: flex;
  flex-direction: column;
}

.section-title {
  flex-grow: 1;
}

.news-conainer {
  flex-grow: 11;
  display: flex;
  flex-direction: column;
  padding: 17px;
}

.main-news {
  flex-grow: 11;
  display: flex;
  flex-direction: row-reverse;
}

.foot-news {
  flex-grow: 1;
}

.right {
  flex-grow: 7;
  display: flex;
  flex-direction: row-reverse;
  margin-left: 20px;
}

.left {
  flex-grow: 10;
  display: flex;
  flex-direction: column;
}

.img {
  max-height: 100%;
  overflow: hidden;
}

.img img {
  max-width: 100%;
}

.info {
  flex-grow: 1;
}

.left-news {
  flex-grow: 1;
  display: flex;
  flex-direction: row-reverse;
}

.left-news:nth-child(2) {
  margin: 10px 0;
}

.left-news-img {
  flex-grow: 1.5;
  background-color: yellow;
}

.left-news-info {
  flex-grow: 3;
}
.left-news-img {
    max-width: 30%;
}
.left-news-img > img {
    max-width: 100%;
}
.right > .img{
   max-width: 30%;
}
<div class="screen">
      <div class="wrapper">
        <div class="section-title">title</div>
        <div class="news-conainer">
          <div class="main-news">
            <div class="right">
              <div class="img">
                <img src="https://via.placeholder.com/250x130" alt="" />
              </div>
              <div class="info">info</div>
            </div>

            <div class="left">
              <div class="left-news">
                <div class="left-news-img">
                <img src="https://via.placeholder.com/250x130" alt="" />
                </div>
                <div class="left-news-info"></div>
              </div>
              <div class="left-news">
                <div class="left-news-img">
                <img src="https://via.placeholder.com/250x130" alt="" />
                </div>
                <div class="left-news-info"></div>
              </div>
              <div class="left-news">
                <div class="left-news-img">
                <img src="./new1.JPG" alt="" />
                </div>
                <div class="left-news-info"></div>
              </div>
            </div>
          </div>
          <div class="foot-news"></div>
        </div>
      </div>
    </div>

Обновление

для вашего правого раздела вы должны предоставить max-width как

.right > .img{
   max-width: 30%;
}

и избавьтесь от height: 100% из .img img селектора, проверьте приведенную выше демонстрацию, так как я обновил код там

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