I've been working on a homepage I've developed recently, and I'm having some difficulty aligning my items in a flexbox. The first flexbox should contain three (3) images, and all images should be on a vertical line below each other.
This is also important for my second flexbox.
This is my code:
.flexcontainer-1 { display: flex; justify-content: flex-start; align-items: left; height: auto; width: auto; } .flexcontainer-2 { display: flex; justify-content: flex-end; align-items: right; height: auto; width: auto; }
<div class="flexcontainer-1"> <!-- Übersicht über alle Immobilien mit entsprechenden Bildern --> <h4>Unsere Immobilien</h4> <!-- Weiterleitung über Anchor innerhalb des Images zu Einzelbeschreibung, --> <!-- Übergabe der ID aus Datenbank in den Anchor --> <p> <a href="db_immobilien_desc_b.php?id=2"> <img src="../images/haus2.jpg" alt="Beschreibung Haus2"></a> </p> <p> <a href="db_immobilien_desc_b.php?id=3"> <img src="../images/haus3.jpg" alt="Beschreibung Haus3"></a> </p> <p> <a href="db_immobilien_desc_b.php?id=4"> <img src="../images/haus4.jpg" alt="Beschreibung Haus4"></a> </p> </div> <div class="flexcontainer-2"> <p> <a href="db_immobilien_desc_b.php?id=5"> <img src="../images/haus5.jpg" alt="Beschreibung Haus5"></a> </p> <p> <a href="db_immobilien_desc_b.php?id=6"> <img src="../images/haus6.jpg" alt="Beschreibung Haus6"></a> </p> <p> <a href="db_immobilien_desc_b.php?id=7"> <img src="../images/haus7.jpg" alt="Beschreibung Haus6"></a> </p> </div>
It always creates a gap in the second alignment of the image, unfortunately I haven't found a solution to this problem yet.
I would really appreciate tips or suggestions and how to improve my coding.
Thank you very much in advance.
kind regards,
Luke
I've tried using the attributes justifiy-content
and align-items
but that doesn't work for me.
P粉7953113212024-02-26 18:53:18
There are multiple ways to implement this layout, CSS grid, Flexbox and multi-column layout all work (in different ways).
The first thing I recommend, though, is to modify the HTML. Semantically, you appear to be showing a list of properties, which immediately suggests that a list should be used (either ordered or unordered); I would suggest that there should be descriptive text and images, which in turn suggests that <figure>
element.
With this revision, once wrapped in a <main>
tag (or <section>
, <article>
...), The above HTML may look like this:
Unsere Immobilien
Use it with a multi-column layout and add explanatory comments in the CSS:
/* CSS custom properties used to provide common theming
to multiple elements: */
:root {
--commonSpacing: 1em;
}
/* a simple CSS reset to remove default margins,
and padding; ensuring all browsers use the
same sizing algorithm for content, and also
applying the same font-size and font-family: */
*,
::before,
::after {
box-sizing: border-box;
font-family: system-ui;
font-size: 16px;
margin: 0;
padding: 0;
}
/* to emphasise the heading: */
h4 {
font-size: 1.8em;
margin-block: calc(0.5 * var(--commonSpacing));
text-align: center;
}
main {
/* setting the size of the inline axis (width, in English and
Latin languages) to 80 viewport width units, with a minimum
size of 30 root-em units, and a maximum size of 1300 pixels: */
inline-size: clamp(30rem, 80vw, 1300px);
/* centering the element on the inline axis: */
margin-inline: auto;
}
ul {
/* using multi-column layout,
ensuring two columns: */
column-count: 2;
/* removing default list-markers: */
list-style-type: none;
/* centering the
Unsere Immobilien
-
-
-
-
-
-
也可以使用 CSS 网格来做到这一点,尽管带有网格的数字将从左到右然后从上到下流动:
/* CSS custom properties used to provide common theming
to multiple elements: */
:root {
--commonSpacing: 1em;
}
/* a simple CSS reset to remove default margins,
and padding; ensuring all browsers use the
same sizing algorithm for content, and also
applying the same font-size and font-family: */
*,
::before,
::after {
box-sizing: border-box;
font-family: system-ui;
font-size: 16px;
margin: 0;
padding: 0;
}
main {
/* setting the size of the inline axis (width, in English and
Latin languages) to 80 viewport width units, with a minimum
size of 30 root-em units, and a maximum size of 1300 pixels: */
inline-size: clamp(30rem, 80vw, 1300px);
/* centering the element on the inline axis: */
margin-inline: auto;
}
/* to emphasise the heading: */
h4 {
font-size: 1.8em;
margin-block: calc(0.5 * var(--commonSpacing));
text-align: center;
}
ul {
/* using grid layout: */
display: grid;
/* spacing adjacent elements: */
gap: var(--commonSpacing);
/* defining two columns, each taking one fraction of
the available space:*/
grid-template-columns: repeat(2, 1fr);
list-style-type: none;
text-align: center;
}
Unsere Immobilien
-
-
-
-
-
-
并且,使用弹性布局:
/* CSS custom properties used to provide common theming
to multiple elements: */
:root {
--commonSpacing: 1em;
}
/* a simple CSS reset to remove default margins,
and padding; ensuring all browsers use the
same sizing algorithm for content, and also
applying the same font-size and font-family: */
*,
::before,
::after {
box-sizing: border-box;
font-family: system-ui;
font-size: 16px;
margin: 0;
padding: 0;
}
main {
/* setting the size of the inline axis (width, in English and
Latin languages) to 80 viewport width units, with a minimum
size of 30 root-em units, and a maximum size of 1300 pixels: */
inline-size: clamp(30rem, 80vw, 1300px);
/* centering the element on the inline axis: */
margin-inline: auto;
}
/* to emphasise the heading: */
h4 {
font-size: 1.8em;
margin-block: calc(0.5 * var(--commonSpacing));
text-align: center;
}
ul {
/* using flexbox layout: */
display: flex;
/* shorthand for:
flex-direction: row;
flex-wrap: wrap; */
flex-flow: row wrap;
/* setting a gap between adjacent elements: */
gap: var(--commonSpacing);
/* removing default list-markers: */
list-style-type: none;
}
li {
/* allowomg the to expand to take up
more room: */
flex-grow: 1;
/* setting the size of the element to be
45% of that of the parent; flex-basis
always refers to the inline-axis of flex-items,
which can be modified by updating the
flex-direction of the parent: */
flex-basis: 45%;
/* centering the content within the : */
text-align: center;
}
Unsere Immobilien
-
-
-
-
-
-
参考文献:
box-sizing
。break-inside
。clamp()
。column-count
。display
。flex-basis
。flex-direction
。flex-grow
。flex-flow
。flex-wrap
。gap
。grid-template-columns
.inline-size
。list-style-type
.margin-block
。margin-inline
。repeat()
。text-align
。var()
。P粉3478048962024-02-26 14:48:33
You appear to be using h4
in the first container.
Get this element from flexcontainer-1
.
To achieve the desired results, you should do this
.container { display: flex; gap:10px; } .item { height: 50px; width: 100px; background-color: blue } .box { display: flex; flex-direction: column; gap: 10px }
House 1House 2House 3House 4House 5House 6