Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a droplet like border effect in css

I created this border design in Photoshop and was wondering if anyone could give me some guidance with how to recreate this using css.

border

like image 831
cheese12345 Avatar asked Sep 17 '14 16:09

cheese12345


People also ask

What is border-style in CSS?

CSS Border Style The border-style property specifies what kind of border to display. The following values are allowed: dotted - Defines a dotted border

How to create 3D effect with border-style?

21. Border-style Negates Border-left Its a simple trick in border design to achieve the 3D effect. It involves leaving one side of the border while 2 or 3 of the remaining sides containing thin black border. This gives the effect of shadow for the box component which we can consider as 3D effect.

What can you do with a border effect in HTML?

In this example, you’ll see it applied to both a container’s border and text. There are any number of possibilities for crafting a unique look with this one. Here’s an example of how a plain old link (or HTML span, in this case) can be dressed up with a border effect.

Why does my CSS have a double border?

These lines are neither perfectly straight not like line drawn by a 4 year old. Its more like a free hand rectangle drawn over and over for few types. Due to that it gets the double border CSS effect. 9.


2 Answers

Creating an effect like this is definitely possible using CSS3 but you would need more than just the border for that.

In the below sample, I have used a pseudo-element with a radial-gradient background to mimick the border effect shown in question. Depending on which side should have the border, you can tweak the positioning of the pseudo element to achieve the effect.

The sample provided in the answer has the effect for the top border. If you want it for bottom border, you can refer to this sample. The same can be achieved for left/right border also but would need a bit more tweaking.

You can also tweak the background-size property to achieve smaller/larger circles in the border. You can also produce an ellipse pattern instead of a circle in the border by using the keyword ellipse instead of circle in the radial-gradient property value.

Points to note:

  1. Caution: I am adding this answer only to illustrate that this effect is possible to create using just CSS3, but wouldn't recommend it for usage just as yet because of the relatively lesser browser support for radial-gradients. You can use this if all your target browsers support it.
  2. If you need this border effect on all sides, then just pseudo-elements would not be enough. You would need extra elements for each side and then position them as required.
  3. The radial-gradient background could also be directly added to the main div if the border is only required on the top. But positioning/achieving this effect for a bottom border wouldn't be possible with it and hence the use of a pseudo-element.
  4. border-image property can be used to achieve the same effect using just borders but that has even lesser browswer support than radial-gradients (even IE 10 doesn't support it) and hence not recommended/used.
  5. The below code was tested in Firefox, Chrome, Opera and Safari and should also work in IE 10+ as radial-gradients are not supported in IE 9 and less.

.bordered{
    position: relative;
    height: 75px;
    width: 100%;
    border-top: 40px solid black;
    background: #EEE;
    padding-top: 10px;
}
.bordered:before{
    position: absolute;
    content: '';
    top: 0px;
    height: 8px;
    width: 100%;
    background-size: 12px 12px;
    background-position: -5px -3px;
    background-image: -webkit-radial-gradient(50% 0%, circle, black 50%, transparent 55%);
    background-image: -moz-radial-gradient(50% 0%, circle, black 50%, transparent 55%);
    background-image: radial-gradient(circle at 50% 0%, black 50%, transparent 55%);
}
<div class="bordered">Lorem Ipsum Dolor Sit Amet</div>

enter image description here


Related Samples:

  1. The method for producing a similar pattern but with triangular cuts at the bottom instead of a circle is available here - Making jagged triangle border in CSS.

  2. The same method can be used for producing a postage stamp like border on top and bottom. A sample for that is available here. There is also a similar question and answer here which I had not come across before posting a sample in this answer.

  3. The same method can be used to produce a border that is the inverse of the droplet border also (like in the image present below). A sample for that is available here.

enter image description here

like image 61
Harry Avatar answered Oct 08 '22 13:10

Harry


In addition to @Harry's answer - (which is probably the best way to approach this)...

We could also achieve this effect using the webkit text-stroke property by setting a thick stroke on a character such as '0'.

We can fine-tune this effect by changing the stroke thickness and the font-size of the character.

div{
    position: relative;
    height: 75px;
    width: 100%;
    border-bottom: 20px solid black;
    background: #EEE;
    padding-top: 10px;
}
div:after{
    position: absolute;
    content: '00000000000000000000000000000000000000000000000000000000000';
    font-size: 30px;
    -webkit-text-stroke: 10px black;
    text-stroke: 10px black;
    bottom:-35px;
    left:0;
    width: 100%;
    overflow:hidden;
}
<div>Lorem Ipsum Dolor Sit Amet</div>
like image 31
Danield Avatar answered Oct 08 '22 12:10

Danield