Recently, I encountered a requirement to display text with a semi-transparent background on an image. The effect is as shown below: Requirements.png After seeing this requirement, the first reaction is to use opacity in CSS3 to set the transparency of the element. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Transparent background, transparent text</title> <style> * { padding: 0; margin: 0; } .container { width: 600px; height: 400px; background: url('https://img1.dongqiudi.com/fastdfs3/M00/18/56/ChOxM1stHByARuNmAAGsJDKXtuM269.jpg') no-repeat; background-size: cover; -webkit-background-size: cover; -o-background-size: cover; background-position: center 0; } .demo { position: absolute; width: 260px; height: 60px; top: 260px; line-height: 60px; text-align: center; background-color: black; opacity: 0.5; } .demo p { color: #FFF; font-size: 18px; font-weight: 600; } </style> </head> <body> <div class="container"> <div class="demo"> <p>2018 World Cup has opened: 10 days</p> </div> </div> </body> </html> The effect is as follows: Background is transparent, text is also transparent.png This seems to meet the needs, but it is not perfect. After setting the opacity, the entire element becomes translucent, causing the text to appear blurry. This solution is not advisable. In fact, setting opacity is not the only way to achieve transparency in CSS. There are two other types:
Here I use the method of setting rgba: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Background transparent, text opaque</title> <style> * { padding: 0; margin: 0; } .container { width: 600px; height: 400px; background: url('https://img1.dongqiudi.com/fastdfs3/M00/18/56/ChOxM1stHByARuNmAAGsJDKXtuM269.jpg') no-repeat; background-size: cover; -webkit-background-size: cover; -o-background-size: cover; background-position: center 0; } .demo { position: absolute; width: 260px; height: 60px; top: 260px; line-height: 60px; text-align: center; background-color: rgba(0,0,0,0.5); } .demo p { color: #FFF; font-size: 18px; font-weight: 600; } </style> </head> <body> <div class="container"> <div class="demo"> <p>2018 World Cup has opened: 10 days</p> </div> </div> </body> </html> The effect is as follows: Background transparent, text opaque.png After this setting, the text appears much clearer. summary In fact, there is not only one way to achieve this requirement. You can also use two DIVs in the same position, one with a semi-transparent background DIV and the other with text DIV. This can also solve the problem, but it requires absolute positioning or negative margin, and a DIV with empty content. This method may appear slightly complicated in some scenarios, as shown in the following example, so specific problems must be analyzed in actual demand scenarios. The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. |
<<: Docker-compose tutorial installation and quick start
>>: Full analysis of web page elements
HTML structure <body> <div class="w...
1. Preparation 1.1 Download the Python installati...
Download CentOS7 The image I downloaded is CentOS...
Nginx cross-domain configuration does not take ef...
This article example shares the specific code of ...
What is a stored procedure Simply put, it is a se...
Preface With the development of big front-end, UI...
1. Problem symptoms Version: MySQL 5.6, using the...
1 Introduction Kong is not a simple product. The ...
Preface MySQL is the most popular relational data...
1 Mysql5.6 1.1 Related parameters MySQL 5.6 adds ...
This article mainly introduces how to implement l...
selinux ( Security-Enhanced Linux) is a Linux ker...
Table of contents 1. Get the file extension 2. Co...
aforementioned This article is very short~ The ma...