Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Transparent border radius outside

Tags:

html

css

I need some help, I have a div with border-radius and I need it to be transparent outside the circle div. I tried with :after and outline. With ":after" the border stayed within the div and with outline I couldn't get it rounded.

Does anyone know the answer ?

CSS :

    div.circle {
        background: black;
        width: 5em;
        height: 5em;
        -moz-border-radius: 2.5em;
        -webkit-border-radius: 2.5em;
        border-radius: 2.5em;
    }
   div.circle p {
        padding: 2em 2em 0 2em;
        color: white;
    }
    div.circle:after {
        content:'';
        display: block;
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        border-radius: 2.5em;
        border: 4px solid rgba(255, 255, 255, 0.51);
    }

CSS with outline property:

   div.circle { 
    outline: 4px solid rgba(255,255,255,0.3); 

    background: black; 
    width: 5em; height: 5em; 
    -moz-border-radius: 2.5em; 
    -webkit-border-radius: 2.5em; 
    border-radius: 2.5em;
}

What I want: http://giovannigras.be/home/img.png

like image 549
Gio Avatar asked Apr 14 '14 12:04

Gio


People also ask

How do I make borders transparent?

Click "Edit" and select "Fill" to get options to fill the border with a color or pattern. You'll also get the option to set the opacity, which will determine how transparent your border is. Set the opacity to 100 percent for a fully transparent border, or 50 percent for a semi-transparent border.

How do you make a transparent border in HTML?

Step 1: Create a div tag. Step 2: Specify the border-style property to be double to set two borders around the box. Step 3: Set the background-clip property to padding-box which clips the background color to the padding of the element.

What is the difference between border and border radius?

The only difference between them is the right button has a radius of 5px applied. As with borders, radius allows you to set different properties for each side of the element using the toggle controls.


2 Answers

Use box-shadow instead of border:

box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.51); 

Cause a transparent border will transpare the background beneath,
while if you use the spread value in the box-shadow property you're good to go:

Example demo

Also as suggested by @vals you can go with background-clip to retain the background size into the content-box size model cause otherwise goes into the default border-box.

Docs:
https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip

like image 157
Roko C. Buljan Avatar answered Sep 30 '22 07:09

Roko C. Buljan


If you want your border to be transparent (or semitransparent), and you are setting a black background, you need to set the background limited to the inner part, so that the border can be seen.

The property for this is background-clip: content-box;

CSS

div.circle {
    background: black;
    background-clip: content-box;
    width: 5em;
    height: 5em;
    border-radius: 50%;
    border: solid 5px rgba(0,0,0,0.3);
}

fiddle

like image 40
vals Avatar answered Sep 30 '22 08:09

vals