Home Web Front-end JS Tutorial How to draw triangles and parallelograms with CSS

How to draw triangles and parallelograms with CSS

Nov 18, 2017 pm 05:09 PM
css Parallelogram

Recently I have seen many tutorials on the Internet teaching you how to use CSS to draw graphics. Today I will summarize for you how to use CSS style sheets to draw triangles and parallelograms. Those who are interested can study it in depth.

The first method: use border

A rectangle to join two triangles to finally create a parallelogram. Why can triangles be generated using borders? Let’s take a look at a picture first:

After looking at the changing process of the three small figures in the picture, you should already understand half of it. In fact, hacking only requires two conditions to create a triangle. First, the length and width of the element itself are 0; second, the unnecessary parts are hidden through border-color. Through a similar method, you can also create trapezoids. The code for the three shapes in the above picture is as follows. (Attached is a CodePen example, http://codepen.io/jerryzou/pen/mJYJym)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#first {

  width: 20px;

  height: 20px;

  border-width: 10px;

  border-style: solid;

  border-color: red green blue brown;

}

  

#second {

  width: 0;

  height: 0;

  border-width: 10px;

  border-style: solid;

  border-color: red green blue brown;

}

  

#third {

  width: 0;

  height: 0;

  border-width: 10px;

  border-style: solid;

  border-color: red transparent transparent transparent;

}

Copy after login


The next step is to consider how to splice a parallelogram. In the border method, it consists of three parts, namely the left triangle, the rectangle, and the right triangle. It would be too cumbersome to create three elements every time a parallelogram is drawn, so the :before and :after pseudo-elements are a good choice here. Let's achieve this effect:

How to draw triangles and parallelograms with CSS

In order to seamlessly splice triangles and rectangles together, multiple attributes must be consistent, so use something like Less, Sass , Stylus and other CSS preprocessors will make this code easier to maintain. The Scss version of the code is given below. (Attached is the CodePen link, http://codepen.io/jerryzou/pen/ZGNGWZ?editors=110)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

//三角形的宽高

$height: 24px;

$width: 12px;

  

//对平行四边形三部分的颜色进行赋值

@mixin parallelogram-color($color) {

  background: $color;

  &:before { border-color: transparent $color $color transparent; }

  &:after { border-color: $color transparent transparent $color; }

}

  

//单个三角形的样式

@mixin triangle() {

  content: '';

  display: block;

  width: 0;

  height: 0;

  position: absolute;

  border-style: solid;

  border-width: $height/2 $width/2;

  top: 0;

}

  

//平行四边形的样式

.para {

  display: inline-block;

  position: relative;

  padding: 0 10px;

  height: $height;

  line-height: $height;

  margin-left: $width;

  color: #fff;

  

  &:after {

    @include triangle();

    right: -$width;

  }

  

  &:before {

    @include triangle();

    left: -$width;

  }

  

  @include parallelogram-color(red);

}

Copy after login

It should be noted that if the slope of the triangle set by $height and $width is too small or If it is too large, it may cause jagged rendering, so you need to test the visual effects of different widths and heights when using it.


The second method: using transform

The method of using transform to realize parallelogram is what I saw when I was shopping, the effect is about It looks like this:

How to draw triangles and parallelograms with CSS

After seeing it, I thought it was so amazing. It turns out that it can only have the outer outline of a parallelogram. (Because method one can only create a parallelogram with a filling effect) It is very simple to implement, mainly with the help of transform: skew(...). Let’s take a look at the source code.

1

2

3

4

5

6

7

8

9

10

11

<style>

.city {

  display: inline-block;

  padding: 5px 20px;

  border: 1px solid #44a5fc;

  color: #333;

  transform: skew(-20deg);

}

</style>

  

<div class="city">上海</div>

Copy after login

So we got this effect:

How to draw triangles and parallelograms with CSS

You must think this when you see the picture:

How to draw triangles and parallelograms with CSS

Don’t worry, we have indeed distorted the entire div, causing the text in the middle to be slanted, and this is obviously not the effect we want. So we need to add an inner element and reversely distort the inner element to get the effect we want:

How to draw triangles and parallelograms with CSS

The implementation code is as follows, Attached is a CodePen example (http://codepen.io/jerryzou/pen/BNeNwV?editors=110)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<style>

.city {

  display: inline-block;

  padding: 5px 20px;

  border: 1px solid #44a5fc;

  color: #333;

  transform: skew(-20deg);

}

  

.city div {

  transform: skew(20deg);

}

</style>

  

<div class="city">

  <div>上海</div>

</div>

Copy after login

Summary

The first method uses the border attribute to hack out the triangle and pass Splicing three elements finally achieves a parallelogram; while the second method uses transform: skew to obtain a parallelogram. Overall, the second method is much smaller than the first method and is easy to understand. The only drawback is that it cannot construct trapezoids like those used in the pagination of this site.

I hope this article will be helpful to everyone. In fact, the same principle applies. Squares, rectangles and some equilateral figures can also be made using this method.

Recommended reading:

html and css production QQ Penguin tutorial


Use CSS 3 to create a long shadow


css to achieve moving cat faces

The above is the detailed content of How to draw triangles and parallelograms with CSS. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use bootstrap in vue How to use bootstrap in vue Apr 07, 2025 pm 11:33 PM

Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

The Roles of HTML, CSS, and JavaScript: Core Responsibilities The Roles of HTML, CSS, and JavaScript: Core Responsibilities Apr 08, 2025 pm 07:05 PM

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

Understanding HTML, CSS, and JavaScript: A Beginner's Guide Understanding HTML, CSS, and JavaScript: A Beginner's Guide Apr 12, 2025 am 12:02 AM

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

How to write split lines on bootstrap How to write split lines on bootstrap Apr 07, 2025 pm 03:12 PM

There are two ways to create a Bootstrap split line: using the tag, which creates a horizontal split line. Use the CSS border property to create custom style split lines.

How to insert pictures on bootstrap How to insert pictures on bootstrap Apr 07, 2025 pm 03:30 PM

There are several ways to insert images in Bootstrap: insert images directly, using the HTML img tag. With the Bootstrap image component, you can provide responsive images and more styles. Set the image size, use the img-fluid class to make the image adaptable. Set the border, using the img-bordered class. Set the rounded corners and use the img-rounded class. Set the shadow, use the shadow class. Resize and position the image, using CSS style. Using the background image, use the background-image CSS property.

How to use bootstrap button How to use bootstrap button Apr 07, 2025 pm 03:09 PM

How to use the Bootstrap button? Introduce Bootstrap CSS to create button elements and add Bootstrap button class to add button text

How to set up the framework for bootstrap How to set up the framework for bootstrap Apr 07, 2025 pm 03:27 PM

To set up the Bootstrap framework, you need to follow these steps: 1. Reference the Bootstrap file via CDN; 2. Download and host the file on your own server; 3. Include the Bootstrap file in HTML; 4. Compile Sass/Less as needed; 5. Import a custom file (optional). Once setup is complete, you can use Bootstrap's grid systems, components, and styles to create responsive websites and applications.

How to resize bootstrap How to resize bootstrap Apr 07, 2025 pm 03:18 PM

To adjust the size of elements in Bootstrap, you can use the dimension class, which includes: adjusting width: .col-, .w-, .mw-adjust height: .h-, .min-h-, .max-h-

See all articles