There will be a white line on the right side of the border-radius setting in CSS Safari browser
CSS Safari browser sets border-radius to have a white line on the right
<!DOCTYPE html>
<html>
<head>
<style>
.box {
width: 100px;
height: 100px;
background-color: #ff00ff;
border-radius: 10px;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
In the above code, a square box with a width and height of 100px is set, the background color is set to purple, and border-radius: 10px
is set. This displays normally in browsers like Chrome and Firefox, but a white line appears on the right side in Safari.
Problem Cause
This problem occurs because Safari interprets the border-radius
attribute differently than other browsers. In Safari, the border-radius property causes the center of an element’s border pixels to become transparent, revealing the underlying background color. Other browsers clip the border pixels from the box.
Solution
While this problem may seem tricky, there are some tricks we can use. Here are a few common solutions:
Method 1: Using Pseudo-elements
We can use pseudo-elements to achieve a border-like effect, avoiding the white line.
.box {
width: 100px;
height: 100px;
position: relative;
}
.box::before {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: #ff00ff;
border-radius: 10px;
}
In the above code, we set position: relative;
on the .box
element and then use the ::before
pseudo-element to simulate a border effect, thus avoiding the white line on the right side.
Method 2: Adjusting the Size
Sometimes, slightly adjusting the box’s size can also solve this problem. We can avoid the appearance of white lines by slightly increasing the width and height of the box and then indenting the content inward by the corresponding distance.
.box {
width: 102px;
height: 102px;
background-color: #ff00ff; border-radius: 10px;
padding: 2px;
box-sizing: border-box;
}
In this method, we increase the width and height of the box by 2px, indent the content using padding: 2px;
, and maintain the box’s total width and height using box-sizing: border-box;
.
Method 3: Using a Background Image
If none of the above methods solve the problem, we can also consider using a background image to cover the white line.
.box {
width: 100px;
height: 100px;
background-image: url('bg.jpg');
background-size: cover;
border-radius: 10px;
}
In this method, we set a background image for the box and use background-size: cover;
to ensure that the image covers the entire box, thereby hiding the white line.
Conclusion
Browser compatibility issues are common in web development, but with a few tricks, we can easily handle various situations. Although Safari may cause white lines when parsing the border-radius
property, the above solution can easily resolve this issue, ensuring that the webpage displays normally in all browsers.