Home  >  Article  >  Web Front-end  >  How to make a hexagonal picture in css

How to make a hexagonal picture in css

php中世界最好的语言
php中世界最好的语言Original
2018-03-20 16:51:141883browse

This time I will show you how to make a hexagonal picture with css, and what are the precautions for making a hexagonal picture with css. The following is a practical case, let's take a look.

This article mainly introduces the sample code for realizing hexagonal images with css and shares it with everyone. The details are as follows:

Without talking about anything else, let’s talk about the effects first:

Using a simple p with pseudo elements, you can 'draw' this hexagonal picture. The principle is that three p's of the same width and height are assembled into a hexagon through positioning and rotation, and then used The background images are layered to form a visual whole image. Let’s implement it step by step below.

(1) Then the first step is, of course, to draw the container. The container is a p with width and height.

Before drawing, you must understand a problem, that is, an equilateral hexagon is made up of three p’s with the same width and height (as shown in the figure below), so the width and height of p must satisfy √ Only three times the conditions can be used to form a regular hexagon. I won’t teach you how to calculate this value here. If you are interested, you can use trigonometric functions to calculate it yourself in private.

     

Here, I set the width of the outer container to 190px, the height to 110px, and then set the background image. The code is as follows

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    .wrap{
        height:110px;
        width: 190px;
        position: relative;
        margin: 200px auto;
        background: url('./eddie.jpg') 50% 50% no-repeat; 
        background-size: auto 220px;
    }
</style>
<body>
    <p class=&#39;wrap&#39;>
    </p>
</body>
</html>
The effect is a picture

(2) In the second step, draw the left p and its pseudo-element picture

In this step, use the new p to position and rotate the left side of the hexagon, and set the width and height of the new p pseudo-element and set a background image consistent with the above picture. Note that the width and height of the new p pseudo-element are the entire hexagon. The width and height. Then rotate the pseudo element to display the picture vertically (the new p should be rotated, so the pseudo element picture is also rotated, so it needs to be reversely rotated back to the normal angle) and the position of the pseudo element must be adjusted (the new p is rotated, which affects the positioning of the pseudo element) position), and finally set the new p to exceed the hidden value, and the left side of the hexagon will be drawn

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    .wrap{
        height:110px;
        width: 190px;
        position: relative;
        margin: 200px auto;
        background: url('./eddie.jpg') 50% 50% no-repeat; 
        background-size: auto 220px;
    }
    .common{
        position: absolute;
        height: 100%;
        width: 100%;
        overflow: hidden;
        left:0;
23 
    }
    .common:before{
        content:'';
        position: absolute;
        background:url('./eddie.jpg') 50% 50% no-repeat;
        background-size: auto 220px;
        width: 190px;
        height: 220px;
    }
    .left{
        transform: rotate(60deg);
    }
    .left:before{
        transform: rotate(-60deg) translate(48px,-28px);
    }
</style>
<body>
    <p class=&#39;wrap&#39;>
        <p class=&#39;left common&#39;></p>
    
    </p>
</body>
</html>
The effect is as follows:

(3) Third Step 1: Draw p on the right and its pseudo-element image

The principle of this step is the same as the second part, except that the angle is reversed, so I won’t go into details and go directly to the complete code

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    .wrap{
        height:110px;
        width: 190px;
        position: relative;
        margin: 200px auto;
        background: url('./eddie.jpg') 50% 50% no-repeat; 
        background-size: auto 220px;
    }
    .common{
        position: absolute;
        height: 100%;
        width: 100%;
        overflow: hidden;
        left:0;
    }
    .common:before{
        content:'';
        position: absolute;
        background:url('./eddie.jpg') 50% 50% no-repeat;
        background-size: auto 220px;
        width: 190px;
        height: 220px;
    }
    .left{
        transform: rotate(60deg);
    }
    .left:before{
        transform: rotate(-60deg) translate(48px,-28px);
    }
    .right{
        transform: rotate(-60deg);
    }
    .right:before{
         transform: rotate(60deg) translate(48px,28px);
         bottom: 0;
    }
</style>
<body>
    <p class=&#39;wrap&#39;>
        <p class=&#39;left common&#39;></p>
        <p class=&#39;right common&#39;></p>
    </p>
</body>
</html>
So far , you can display the picture at the beginning of the article. Using this principle, you can also create various other shapes of picture display effects. Welcome to continue your research. In the future, picture display will no longer be a single brick line! !

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

css3 animation sequence animation

How to use CSS weird box model and standard box model

The above is the detailed content of How to make a hexagonal picture in css. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn