CSS Grids and Fraction Unit - html

I'm trying to understand the basics of CSS grids but have a problem with fraction grid-template: repeat(4, 1fr) / repeat(3, 1fr); unit.
.grid-container {
display: grid;
grid-template: repeat(4, 1fr) / repeat(3, 1fr);
grid-gap: 20px;
grid-template-areas: 'header header header' 'sidebar content content' 'sidebar content content' 'footer footer footer';
}
.item-1 {
grid-area: content;
background: #000;
color: #ffffff;
text-align: justify;
padding: 10px;
}
.item-2 {
grid-area: sidebar;
background: #852021;
color: #ffffff;
padding: 10px;
}
.item-3 {
grid-area: header;
background: yellow;
text-align: center;
padding: 10px;
}
.item-4 {
grid-area: footer;
background: gray;
color: #fff;
text-align: center;
padding: 10px;
}
<div class="grid-container">
<div class="item-1">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non nulla sapiente cumque ratione quas consequatur, quaerat qui possimus et voluptatibus expedita tempore porro fuga aliquam, cum aut rerum perspiciatis blanditiis.
</div>
<div class="item-2">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non nulla sapiente cumque ratione quas consequatur, quaerat qui possimus et voluptatibus expedita tempore porro fuga aliquam, cum aut rerum perspiciatis blanditiis.
</div>
<div class="item-3">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non nulla sapiente cumque ratione quas consequatur, quaerat qui possimus et voluptatibus expedita tempore porro fuga aliquam, cum aut rerum perspiciatis blanditiis.
</div>
<div class="item-4">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non nulla sapiente cumque ratione quas consequatur, quaerat qui possimus et voluptatibus expedita tempore porro fuga aliquam, cum aut rerum perspiciatis blanditiis.
</div>
</div>

It allows you to define a ratio. So if you use "1fr 1fr 1fr 1fr" this means 4 columns, each with 1 share of the width, so they will each be 25% of the width. If however you use "1fr 2fr 1fr" then there will be 3 columns, where the first and last will both be 25% but the middle one will be 50%.
It makes adding another column easier, without having to do the maths to work out what all the percentages should be now.
See this article for more information.

The first part defines 4 rows, each with 1 fr, so each row will get 25% of the total height
The second part defines 3 columns, each with 1 fr, so each column will get 33% of the total width.
THis agrees with the following definition of areas, where there are 4 strings, one for each row, with 3 names in every string, one for each column.

Related

How to wrap a long text while first line of it remain at top but the other lines break

I've made a comment section used grid-box like this:
.grid {
display: grid;
align-items: center;
justify-items: center;
grid-template: 70px auto / 70px auto auto;
}
.profile-picture {
width: 42px;
height: 42px;
background-color: #aaa;
border-radius: 50%;
}
.long-text {
grid-column: 2 / -1;
grid-row: 2 / -1;
}
<div class="grid">
<div class="profile-picture"></div>
<span style="font-weight: 700;">Amogus</span>
<span class="long-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi dolor est error aspernatur. Obcaecati fuga inventore ab cumque enim ipsam quisquam delectus ad, dolor numquam molestias necessitatibus ratione quis facere! Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi dolor est error aspernatur. Obcaecati fuga inventore ab cumque enim ipsam quisquam delectus ad, dolor numquam molestias necessitatibus ratione quis facere!</span>
</div>
The long text is either completely separated from the title and photo or is completely attached by switching between
.long-text {
/* separated one */
grid-column: 2 / -1;
grid-row: 2 / -1;
}
And
.comment-text {
/* attached one */
grid-column: 3 / -1;
grid-row: 1 / -1;
}
But I want something like this:
Wrap long text in paragraph element and place it in second row. Also you don't need to place long text in span, just move it's class to <p> tag.
.grid {
display: grid;
align-items: center;
justify-items: center;
grid-template: 70px auto / 70px auto auto;
}
.profile-picture {
width: 42px;
height: 42px;
background-color: #aaa;
border-radius: 50%;
}
.long-text {
grid-column: 2 / -1;
grid-row: 1 / -1;
}
<div class="grid">
<div class="profile-picture"></div>
<p class="long-text">
<span style="font-weight: 700;">Amogus</span>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi dolor est error aspernatur. Obcaecati fuga inventore ab cumque enim ipsam quisquam delectus ad, dolor numquam molestias necessitatibus ratione quis facere! Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi dolor est error aspernatur. Obcaecati fuga inventore ab cumque enim ipsam quisquam delectus ad, dolor numquam molestias necessitatibus ratione quis facere!
</p>
</div>
I should've added a div or p element as a parent of two span tags (username, long-text) and it fixed :)

wrong Flexbox size

I want to make 3 blocks with flex.
the first must occupy an entire column and the other 2 must be arranged in the second column with 50% of the height each. the first of the second column being an image, I would like the third, which contains only text, to be the same height.
unfortunately, even if this text block seems to have the same size as my image, the size of the 1st column is limited to the end of the text in this block.
.superposition {
display: flex;
width: 70%;
}
.block-orange {
background-color: #F26522;
color: white;
padding: 10px;
flex: 0 0 30%;
}
.superposition .flex-col {
display: flex;
flex-direction: column;
}
.superposition div div {
flex: 0 0 50%;
}
.bg-white {
background-color: yellow;
color: #627188;
}
.bg-grey{
background-color: grey;
}
<section class="superposition">
<div class="block-orange">
<h2>bright ass orange</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque sunt possimus tenetur porro aliquam, tempora itaque aperiam perspiciatis reiciendis dignissimos assumenda odit incidunt sit voluptatem quae laudantium. Accusamus, cum at?</p>
</div>
<div class="flex-col">
<div class="bg-grey">
<img src="img/header-soleil.png" alt="couché de soleil">
</div>
<div class="bg-white">
<h2>finaly a layout that blows your head off</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.Totam quod excepturi laboriosam vero numquam tenetur corporis iusto magni quaerat eaque dolore, assumenda unde est nostrum saepe fugiat nam doloremque esse.
</p>
</div>
</div>
</section>
why the first column (block-orange) does not adapt in height to the second column?
It seems that you want a grid in which:
Content can expand column height.
Column heights always match.
Two rows are each 50% column height.
This sounds like a "two-dimensional" layout, controlled by both row and column.
Building such layouts with flexbox will likely be a struggle and/or produce fragile layouts.
For reference, see Relationship of grid layout to other layout methods:
do I only need to control the layout by row or column – use a flexbox
do I need to control the layout by row and column – use a grid
Also see Equal height rows in CSS Grid Layout.
I recommend a grid layout instead.
Here's a demonstration:
body {
margin: 0;
}
.superposition {
display: grid;
grid-template-columns: 30% 40%;
grid-auto-rows: 1fr;
}
.block-orange {
background-color: orange;
grid-row: 1/3;
}
.bg-grey {
background-color: grey;
}
.bg-white {
background-color: yellow;
}
.bg-grey img {
width: 100%;
height: 100%;
object-fit: cover;
}
.cellpad {
box-sizing: border-box;
padding: 1em;
}
<section class="superposition">
<div class="block-orange cellpad">
<h2>bright orange</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque sunt possimus tenetur porro aliquam, tempora itaque aperiam perspiciatis reiciendis dignissimos assumenda odit incidunt sit voluptatem quae laudantium. Accusamus, cum at?</p>
</div>
<div class="bg-grey">
<img src="https://fakeimg.pl/440x320/282828/eae0d0/" alt="">
</div>
<div class="bg-white cellpad">
<h2>finally a layout that blows your mind</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.Totam quod excepturi laboriosam vero numquam tenetur corporis iusto magni quaerat eaque dolore, assumenda unde est nostrum saepe fugiat nam doloremque esse.
</p>
</div>
</section>
To achieve the result you are looking for, one approach would be to apply
flex-direction: column;
to the entire .superposition parent <div>, in combination with:
flex-wrap: wrap;
which will ensure that if .block-orange occupies 100% of the height of .superposition, then .bg-grey will follow it by starting at the top of .superposition, to the right of .block-orange.
i.e. The divs are still wrapping but they are wrapping horizontally, rather than wrapping vertically.
Working Example:
.superposition {
display: flex;
flex-direction: column;
flex-wrap: wrap;
width: 70%;
height: 500px;
}
.block-orange {
flex: 1 0 100%;
width: 30%;
padding: 0 10px;
color: white;
background-color: #F26522;
}
.bg-grey,
.bg-white {
flex: 0 0 50%;
width: 70%;
padding: 0 10px;
}
.bg-white {
color: #627188;
background-color: yellow;
}
.bg-grey {
background-color: grey;
}
<section class="superposition">
<div class="block-orange">
<h2>bright ass orange</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque sunt possimus tenetur porro aliquam, tempora itaque aperiam perspiciatis reiciendis dignissimos assumenda odit incidunt sit voluptatem quae laudantium. Accusamus, cum at?</p>
</div>
<div class="bg-grey">
<img src="img/header-soleil.png" alt="couché de soleil">
</div>
<div class="bg-white">
<h2>Finally, a layout that blows your head off</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.Totam quod excepturi laboriosam vero numquam tenetur corporis iusto magni quaerat eaque dolore, assumenda unde est nostrum saepe fugiat nam doloremque esse.</p>
</div>
</section>

CSS Grid doesn't break with autofit and causes blowout after adding min-width to a <p>

I´m new to the grid system but every solution i find is:
.c-grid-tmp1 {display:grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)) ;}
It works accordingly and creates a breaking point just like i wanted until i add one line of very important css which is:
.c-grid > div > p {min-width:45ch; max-width: 60ch; margin-left:5px}
The min-width suddenly causes the breaking point to stop working properly and also causes overlapping and blowout.
At the following screenshots I increasingly reduce the width of the page via chrome devtools.
Normal size
Stops working properly
Works properly again
Then suddenly not again
And at rly small size
section {
width: 802px;
background-color:antiquewhite;
}
.c-grid-tmp1 {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.c-grid {
display: grid;
grid-auto-columns: 60px 1fr;
}
.c-grid>img {
grid-row: 1/2;
grid-column: 1;
min-width: 50px;
}
.c-grid>div {
grid-row: 1;
grid-column: 2/3;
margin: 10px;
margin-left: 10px
}
.c-grid>div>p {
min-width: 45ch;
max-width: 60ch;
margin-left: 5px
}
<section>
<h2>Die Vorteile im Einzelnen:</h2>
<div class="c-grid-tmp1">
<div class="c-grid">
<img src="/pics/icon/e-53www-34-grww-000.svg" width="60" height="60" alt="Icon Netzwerk" />
<div>
<h4>lorem ipsum dolor</h4>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis!Lorem ipsum dolor
sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis!
</p>
</div>
</div>
<div class="c-grid">
<img src="/pics/icon/e-53www-34-grww-000.svg" width="60" height="60" alt="Icon Netzwerk" />
<div>
<h4>lorem ipsum dolor</h4>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis! Lorem ipsum dolor
sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis!
</p>
</div>
</div>
</div>
</section>
repeat(auto-fit, minmax(300px, 1fr)) means for every 300px, insert a new column. If there is any remaining space (< 300px), expand the columns to fill that space.
With your paragraph being min-width: 45ch which is larger than 300px (the min column width), there are cases where you'll get a blow out.
You should either:
Remove min-width: 45ch and let the width of your paragraph be decided by the width of it's containing column.
Increase your minimum column width so that it can never be smaller than your paragraph. For example: repeat(auto-fit, minmax(500px, 1fr)).
I'd recommend #1, as your column content will resize according to it's column width. Here's a snippet:
section {
width: 802px;
background-color: antiquewhite;
}
.c-grid-tmp1 {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.c-grid {
display: grid;
grid-auto-columns: 60px 1fr;
}
.c-grid>img {
grid-row: 1/2;
grid-column: 1;
min-width: 50px;
}
.c-grid>div {
grid-row: 1;
grid-column: 2/3;
margin: 10px;
margin-left: 10px
}
.c-grid>div>p {
/*min-width: 45ch;*/
max-width: 60ch;
margin-left: 5px
}
<section>
<h2>Die Vorteile im Einzelnen:</h2>
<div class="c-grid-tmp1">
<div class="c-grid">
<img src="/pics/icon/e-53www-34-grww-000.svg" width="60" height="60" alt="Icon Netzwerk" />
<div>
<h4>lorem ipsum dolor</h4>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis!Lorem ipsum dolor
sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis!
</p>
</div>
</div>
<div class="c-grid">
<img src="/pics/icon/e-53www-34-grww-000.svg" width="60" height="60" alt="Icon Netzwerk" />
<div>
<h4>lorem ipsum dolor</h4>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis! Lorem ipsum dolor
sit amet consectetur adipisicing elit. Nostrum tenetur, amet deserunt tempore aliquam eos atque distinctio inventore repellendus quaerat! Ducimus laboriosam ut porro amet repudiandae natus ipsam incidunt perferendis!
</p>
</div>
</div>
</div>
</section>

Heading elements appearing below content

I can't position the items correctly:
1 - The titles "App name", "Title 1" and "Title 2" (h1 tags) are located below the cells and not above.
2- The vertical spaces between the div are very large
I tried "playing" using the properties in several elements:
align-items
justify-item
align-self
justify-self
margin
padding
My code:
.grid-container {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas: "title1""title2""title3";
background-color: crimson;
grid-column-gap: 15px;
grid-row-gap: 15px;
}
.title1 {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-template-areas: "title1-subtitle1 title1-subtitle2""title1-subtitle3 title1-subtitle4";
grid-area: title1;
background-color: yellow;
grid-column-gap: 15px;
grid-row-gap: 15px;
width: 95%;
align-items: center;
justify-items: center;
align-self: center;
justify-self: center;
margin: auto;
}
.title1>div {
background-color: orange;
}
.title1 div>h2,
p {
display: flex;
justify-content: center;
align-items: center;
}
.title1-subtitle1 {
grid-area: title1-subtitle1;
}
.title1-subtitle2 {
grid-area: title1-subtitle2;
}
.title1-subtitle3 {
grid-area: title1-subtitle3;
}
.title1-subtitle4 {
grid-area: title1-subtitle4;
}
.title2 {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
grid-template-areas: "title2-subtitle1 title2-subtitle2";
grid-area: title2;
background-color: green;
grid-column-gap: 15px;
grid-row-gap: 15px;
width: 95%;
align-items: center;
justify-items: center;
align-self: center;
justify-self: center;
margin: auto;
}
.title2>div {
background-color: lightblue;
}
.title2 div>h2,
p {
display: flex;
justify-content: center;
align-items: center;
}
.title2-subtitle1 {
grid-area: title2-subtitle1;
}
.title2-subtitle2 {
grid-area: title2-subtitle2;
}
.title3 {
grid-area: title3;
background-color: violet;
grid-column-gap: 15px;
grid-row-gap: 15px;
width: 95%;
align-items: center;
justify-items: center;
align-self: center;
justify-self: center;
margin: auto;
}
.title3>h1,
p {
display: flex;
justify-content: center;
align-items: center;
}
<div class="grid-container">
<h1>App name</h1>
<div class="title1">
<h1>Title 1</h1>
<div class="title1-subtitle1">
<h2>Title 1 - Subtitle 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
<div class="title1-subtitle2">
<h2>Title 1 - Subtitle 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae? Lorem ipsum, dolor
sit amet consectetur adipisicing elit. Eaque, odit aspernatur ea dolores dicta nisi, unde ut dolorem omnis iste blanditiis saepe, dolorum rerum quos consequuntur temporibus veritatis voluptatum accusantium? Lorem ipsum dolor sit amet consectetur
adipisicing elit. Quod qui, incidunt voluptas aperiam corrupti molestiae aut nostrum voluptatem ratione totam dicta, distinctio expedita quaerat magni repellendus aliquid, animi sapiente quo.
</p>
</div>
<div class="title1-subtitle3">
<h2>Title 1 - Subtitle 3</h2>
<p>Lorem
</p>
</div>
<div class="title1-subtitle4">
<h2>Title 1 - Subtitle 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
</div>
<div class="title2">
<h1>Title 2</h1>
<div class="title2-subtitle1">
<h2>Title 2 - Subtitle 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
<div class="title2-subtitle2">
<h2>Title 2 - Subtitle 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
</div>
<div class="title3">
<h1>Title 3</h1>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. A velit in aperiam, expedita nesciunt nemo ea pariatur explicabo laudantium quasi commodi sed laboriosam obcaecati, libero nobis voluptas? Aliquam, possimus. Nemo.
</p>
</div>
</div>
This is how I want it to look like:
The main problem with your title placement was that you didn't define a grid-area name for them, and then list it in grid-template-areas.
Once in a grid container, a heading (h1, h2, etc.) is just another grid item.
Because it was being ignored by grid-template-areas it was handled by the grid auto-placement algorithm, which was rendering it last.
How about moving the <h1>Title 1</h1> out of the div element? and while your at it, upload your code to jsfiddle or something, it's very convenient

empty space in the second fraction of grid-template-column in big screen layout

enter image description here
So, i am trying to create my layout for big screens (min-width:768px). Yet, when I set grid-template-columns as 1fr 1fr, there is empty space in the second column for both divs.
/* about */
.about-container{
padding: 3rem;
max-width: 90vw;
margin: 2rem auto;
display: grid;
grid-row-gap: 2rem;
}
#media screen and (min-width:768px){
.about{
display: grid;
grid-template-columns: 1fr 1fr;
}
}
.about_picture_1{
width: 100%;
display: block;
height: 100%;
border-radius: 0.25rem;
}
<div class="about-container">
<div class="about">
<div class="column_about_1">
<h2>Our Story</h2>
<p class="about_text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Excepturi, minus. Animi adipisci perspiciatis, quae aspernatur fugiat odit incidunt officia nemo enim consequuntur quas cupiditate obcaecati hic, doloremque corrupti labore quidem?</p>
<div class="about_picture">
<img src="img/bravo.jpg" class="about_picture_1" alt="">
</div>
<div class="column_about_2">
<h2>Our Story</h2>
<p class="about_text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Excepturi, minus. Animi adipisci perspiciatis, quae aspernatur fugiat odit incidunt officia nemo enim consequuntur quas cupiditate obcaecati hic, doloremque corrupti labore quidem?</p>
<img src="img/pizzafork.jpg" class="about_picture_1" alt="">
</div>
</div>
</div>
I think you should move the display:grid css rule in "about" class outside of media query and set the grid areas outside then for 768px and up for big screens set the grid template areas for 2 columns. Here's my sample css code that I made:
.about-container{
padding: 3rem;
max-width: 90vw;
margin: 2rem auto;
display: grid;
grid-row-gap: 2rem;
}
.about {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
grid-template-areas:
"col1 col1"
"col2 col2";
}
#media screen and (min-width:768px){
.about{
grid-template-areas:
"col1 col2"
"col1 col2";
}
}
.about_picture_1{
width: 100%;
display: block;
height: 100%;
border-radius: 0.25rem;
}
.column_about_1 {
grid-area: col1;
}
.column_about_2 {
grid-area: col2;
}
Here's your html structure that I updated/fixed.
<div class="about-container">
<div class="about">
<div class="column_about_1">
<h2>Our Story</h2>
<p class="about_text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Excepturi, minus. Animi adipisci perspiciatis, quae aspernatur fugiat odit incidunt officia nemo enim consequuntur quas cupiditate obcaecati hic, doloremque corrupti labore quidem?</p>
<div class="about_picture">
<img src="img/bravo.jpg" class="about_picture_1" alt="">
</div>
</div>
<div class="column_about_2">
<h2>Our Story</h2>
<p class="about_text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Excepturi, minus. Animi adipisci perspiciatis, quae aspernatur fugiat odit incidunt officia nemo enim consequuntur quas cupiditate obcaecati hic, doloremque corrupti labore quidem?</p>
<div>
<img src="img/pizzafork.jpg" class="about_picture_1" alt="">
</div>
</div>
</div>
</div>