Flex / Grid - 2 столбца, но 1-й столбец также имеет 2 столбца внутри - PullRequest
0 голосов
/ 15 октября 2019

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

Пример

Я пытаюсь использовать строку сетки, столбец сетки и flexbox.

Один контейнер, затем левый столбец сетки составляет 66%, а правый столбец - 33%. См .:

 <div class="grid"></div>
              <div class="grid__row"></div>
              <div class="grid__col grid__col--two-thirds">
                <div class="score">Laag 1: Bewustzijn</div>
                <div class="score">Laag 1: Bewustzijn</div>
                <div class="score">Laag 1: Bewustzijn</div>
                <div class="score">Laag 1: Bewustzijn</div>
              </div>
              <div class="grid__col">dfgkfdjglkfdjgkfdjglkfdjglkfdjglkfdjglkdfg</div>

И css:

.grid {
    position: relative;
    margin-right: auto;
    margin-left: auto;
    padding-right: 16px;
    max-width: 1080px;
    width: 100%;
}

.grid__row {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-right: -16px;
    margin-left: -16px;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    flex-direction: row;
}

.grid__col, .grid__spacer {
    padding-left: 16px;
    padding-right: 16px;
    max-width: 100%;
}

.grid__col--two-thirds {
    -webkit-box-flex: 0;
    -ms-flex: 0 0 66.6667%;
    flex: 0 0 66.6667%;
}

Не получается. Что легко исправить?

Ответы [ 3 ]

0 голосов
/ 15 октября 2019

CSS-Grid может сделать это.

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr)
}

.grid__row {
  grid-column: 1 / -1;
  background: pink;
}

.grid__col {
  background: lightgreen;
  min-width: 0;
}

.grid__col--two-thirds {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-column: 1 / 3;
  background: lightblue;
}
<div class="grid">
  <div class="grid__row">Full Width Row</div>
  <div class="grid__col grid__col--two-thirds">
    <div class="score">Laag 1: Bewustzijn</div>
    <div class="score">Laag 2: Bewustzijn</div>
    <div class="score">Laag 3: Bewustzijn</div>
    <div class="score">Laag 4: Bewustzijn</div>
  </div>
  <div class="grid__col">Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloribus, dolorum?</div>
</div>
0 голосов
/ 15 октября 2019

Я использовал сетки для решения. Вы можете посмотреть кодовую ссылку.

* {
  margin: 0; 
  padding: 0; 
  box-sizing: border-box; 
}

.container {
  width: 1000px; 
  margin: 30px auto; 
  display: grid;
  grid-template-rows: repeat( 4, 100px);
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
  
  & > * {
    background-color: #FF7373;
    font-size: 25px;
    color: #FFF;
    padding : 20px;
    font-family: sans-serif;
  }
  
}

.score1 {
  grid-row: 1/2;
  grid-column: 1/2;
}
.score2 {
  grid-row: 1/2;
  grid-column: 2/3;
}
.score3 {
  grid-row: 2/3;
  grid-column: 1/2;
}
.score4 {
  grid-row: 2/3;
  grid-column: 2/3;
}
.score5 {
  grid-row: 3/4;
  grid-column: 1/2;
}
.score6 {
   grid-row: 3/4;
  grid-column: 2/3;
}
.score7 {
  grid-row: 4/5;
  grid-column: 1/2;
}
.score8 {
  grid-row: 4/5;
  grid-column: 2/3;
}
.score-box {
  grid-row: 1/-1;
  grid-column: 3/4;
}
 <div class="container">
   <div class="score1"> Laag 1: Bewustzijn </div>
   <div class="score2"> Laag 2: Beleid </div>
   <div class="score3"> Laag 3: Monitoring </div>
   <div class="score4"> Laag 4: Data Security </div>
   <div class="score5"> Laag 5: Applicatie </div>
   <div class="score6"> Laag 6: EndPoint Security </div>
   <div class="score7"> Laag 7: netwerk/Systeem </div>
   <div class="score8"> Laag 8: Fysiek </div>
   <div class="score-box">dfgkfdjglkfdjgkfdjglkfdjglkfdjglkfdjglkdfg </div>
</div>
0 голосов
/ 15 октября 2019

Я бы использовал display: flex. Затем в этих согнутых полях вы можете использовать более согнутые поля.

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

Вот как я бы это сделал:

/* GENERAL */
	* {
		margin: 0;
		padding: 0;
		box-sizing: border-box!important;
		position: relative;
		word-wrap: break-word;
	}

	@media screen and (max-width: 1023px) {
		* {
			text-align: center;
		}
	}

	body {
		width: 100%;
		height: 100%;
	}
/* END GENERAL */

.container {
	width: 100%;
	max-width: 1248px;
	margin: 0 auto; /* centers container */
	padding: 10px; /* this combined with the margin in the divs will make the margins appear consistent */
	box-sizing: border-box;
	display: -webkit-box;
	display: -moz-box;
	display: -ms-flexbox;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-wrap: wrap;
	flex-wrap: wrap;
	flex-direction: row; /* sort into rows */
	align-items: stretch;
	justify-content: space-between;
	text-align: center;
}

	.container .container-inner {
		width: calc((100% / 2) - 20px); /* calculate width for maximum accuracy | minus margin */
		margin: 10px; /* space between boxes */
		padding: 20px; /* space inside boxes */
		box-sizing: border-box; /* calculates border and padding in width */
		display: -webkit-box;
		display: -moz-box;
		display: -ms-flexbox;
		display: -webkit-flex;
		display: flex;
		-webkit-flex-wrap: wrap;
		flex-wrap: wrap;
		flex-direction: row; /* sort into columns */
		align-items: center;
		justify-content: center;
		flex-grow: 1; /* forces singular div that falls beneath to be full width */

		background-color: rgba(0,0,0,0.25);
	}
		@media screen and (min-width: 640px) and (max-width: 1023px) {
			.container .container-inner {
				width: calc((100% / 2) - 20px); /* calculate width for maximum accuracy | minus margin */
			}
		}
		@media screen and (max-width: 639px) {
			.container .container-inner {
				width: 100%; /* calculate width for maximum accuracy | minus margin */
			}
		}

		.container .container-col-one .container-content {
			width: calc((100% / 2) - 20px); /* calculate width for maximum accuracy | minus margin */
			margin: 10px; /* space between boxes */
			padding: 20px; /* space inside boxes */
			box-sizing: border-box; /* calculates border and padding in width */
			display: -webkit-box;
			display: -moz-box;
			display: -ms-flexbox;
			display: -webkit-flex;
			display: flex;
			-webkit-flex-wrap: wrap;
			flex-wrap: wrap;
			flex-direction: column; /* sort into columns */
			align-items: center;
			justify-content: center;
			flex-grow: 1; /* forces singular div that falls beneath to be full width */

			background-color: rgba(0,0,0,0.25);
		}
			@media screen and (max-width: 1023px) {
				.container .container-inner {
					width: 100%; /* calculate width for maximum accuracy | minus margin */
				}
			}
		.container .container-col-two .container-content {
			width: calc(100% - 20px); /* calculate width for maximum accuracy | minus margin */
			margin: 10px; /* space between boxes */
			padding: 20px; /* space inside boxes */
			box-sizing: border-box; /* calculates border and padding in width */
			display: -webkit-box;
			display: -moz-box;
			display: -ms-flexbox;
			display: -webkit-flex;
			display: flex;
			-webkit-flex-wrap: wrap;
			flex-wrap: wrap;
			flex-direction: column; /* sort into columns */
			align-items: center;
			justify-content: center;
			flex-grow: 1; /* forces singular div that falls beneath to be full width */

			background-color: rgba(0,0,0,0.25);
		}

		h1 {
			margin-bottom: 20px;
		}
<section class="container">

	<div class="container-col-one container-inner">
		<div class="container-content">
			<h1>Lorem ipsum </h1>

			<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis nemo quas dolor optio autem! Veniam, dolore neque nam harum quae excepturi distinctio optio explicabo ipsum laudantium nesciunt et autem a.</p>
		</div>
		<div class="container-content">
			<h1>Lorem ipsum</h1>

			<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis nemo quas dolor optio autem! Veniam, dolore neque nam harum quae excepturi distinctio optio explicabo ipsum laudantium nesciunt et autem a.</p>
		</div>
	</div>
	<div class="container-col-two container-inner container-content">
		<div>
			<h1>Lorem ipsum </h1>

			<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis nemo quas dolor optio autem! Veniam, dolore neque nam harum quae excepturi distinctio optio explicabo ipsum laudantium nesciunt et autem a.</p>
		</div>
	</div>
</section>

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

Надеюсь, это поможет,Джейсон.

...