


How to use transform skewX in css3 to implement a parallelogram navigation menu
The content of this article is about how to use transform skewX in css3 to implement a parallelogram navigation menu. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
A parallelogram is actually a superset of a rectangle: its sides are parallel in pairs, but its corners are not necessarily right angles. In visual design, parallelograms can often convey a sense of movement.
Let’s try creating a button-like parallelogram link using CSS. Our starting point is an ordinary block button, supplemented by some simple styles. Then, we can use the deformation property of skew() to stretch the rectangle diagonally:
transform: skewX(-45deg);
However, this results in Its content is also distorted sideways, which is unsightly and difficult to read. Is there a way to just tilt the shape of the container while keeping its contents the same?
Many people will think of the nested element solution, then we can apply another reverse skew() deformation to the content to offset the deformation effect of the container and finally produce the results we expect. Unfortunately, this means that we will have to use an extra layer of HTML elements to wrap the content, such as a span:
<a href="www.php.cn" class="button"> <span>www.php.cn</span> </a> .button { transform: skewX(-45deg); } .button > span { transform: skewX(45deg); }
As we can see, this method performs very well, but it also means that So we have to add additional HTML elements. If changes to the structural layer are not allowed, or you want to strictly maintain the purity of the structural layer, don’t worry, we also have a pure CSS solution.
Pseudo-element solution
Another idea is to apply all styles (background, border, etc.) to pseudo-elements, and then transform the pseudo-elements. Because our content is not contained in a pseudo-element, the content will not be affected by the transformation. Let’s see if this technique can get the same link style as before.
We want pseudo-elements to remain flexible and automatically inherit the dimensions of their host element, even when the host element's dimensions are determined by its content. A simple solution is to apply the position: relative style to the host element and set position: absolute to the pseudo element, and then set all offsets to zero so that it is stretched to the host element both horizontally and vertically. size of. The code looks like this:
.button { position: relative; /* 其他的文字颜色、内边距等样式…… */ } .button::before { content: ''; position: absolute; top: 0; right: 0; bottom: 0; left: 0; }
At this time, the square generated with the pseudo-element overlaps the content. Once a background is set to it, it will cover the content. To fix this problem, we can set the z-index: -1 style for the pseudo-element so that its stacking level will be pushed behind the host element. Now the last step we have to do is to morph it as much as we want and enjoy the beautiful results. The final version of the code is as follows, and the visual effect it produces is exactly the same as the technique mentioned above:
.button { position: relative; /* 其他的文字颜色、内边距等样式…… */ } .button::before { content: ''; /* 用伪元素来生成一个矩形 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: #58a; transform: skew(45deg); }
This technique is not only useful for skew() deformation, but also applies to any other deformation style. , which can be used when we want to deform an element without deforming its content. For example, if we slightly adjust this technique to the rotate() deformation style, and then use it on a square element, we can easily get a diamond shape.
The key to this technique is that we use pseudo-elements and positioning attributes to generate a box, then style the pseudo-element and place it below its host element. This idea can also be used in other scenes to achieve various effects.
The above is the detailed content of How to use transform skewX in css3 to implement a parallelogram navigation menu. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











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.

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

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.

React combines JSX and HTML to improve user experience. 1) JSX embeds HTML to make development more intuitive. 2) The virtual DOM mechanism optimizes performance and reduces DOM operations. 3) Component-based management UI to improve maintainability. 4) State management and event processing enhance interactivity.

The roles of HTML, CSS and JavaScript in web development are: 1. HTML defines the web page structure, 2. CSS controls the web page style, and 3. JavaScript adds dynamic behavior. Together, they build the framework, aesthetics and interactivity of modern websites.

The future of HTML is full of infinite possibilities. 1) New features and standards will include more semantic tags and the popularity of WebComponents. 2) The web design trend will continue to develop towards responsive and accessible design. 3) Performance optimization will improve the user experience through responsive image loading and lazy loading technologies.

HTML is the cornerstone of building web page structure. 1. HTML defines the content structure and semantics, and uses, etc. tags. 2. Provide semantic markers, such as, etc., to improve SEO effect. 3. To realize user interaction through tags, pay attention to form verification. 4. Use advanced elements such as, combined with JavaScript to achieve dynamic effects. 5. Common errors include unclosed labels and unquoted attribute values, and verification tools are required. 6. Optimization strategies include reducing HTTP requests, compressing HTML, using semantic tags, etc.

When developing websites using CraftCMS, you often encounter resource file caching problems, especially when you frequently update CSS and JavaScript files, old versions of files may still be cached by the browser, causing users to not see the latest changes in time. This problem not only affects the user experience, but also increases the difficulty of development and debugging. Recently, I encountered similar troubles in my project, and after some exploration, I found the plugin wiejeben/craft-laravel-mix, which perfectly solved my caching problem.
