字符圆角尖角实现对话框

尽管现在很多浏览器都支持圆角border-radius这个属性了。

以前做圆角还没那么简单的时候,能用其他方法模拟出圆角,但是不尽完美就是了。

以前在看对话框的时候就疑惑,对话框旁边的小尖角是怎么做的。

看到一篇博客用字符做出来,感觉又get到了技能。

用字符做圆角的话,还是略显粗糙,在浏览器放大到150的时候就显现出来了。

但是尖角的话用作对话的指向确实不错,浏览器兼容也可以。

第二个对话框要实现字符边框效果,关键在于多做一个覆盖层,通过定位的差距遮挡住前一个圆角的绝大部分,只露出圆弧部分实现。

点击看效果demo

<!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">
    <link rel="styleSheet" href="./demo.css">
    <title>Document</title>
    <style>
        .ml20{
            margin: 0 auto;
            display: inline-block;
        }
        .sharp_square{
            width: 333px;
            height: 110px;
            background: #a0b3d6;
            position: relative;
            color: #a0b3d6;
        }
        .sharp_top_corner{
            line-height: 1;
            position: absolute;
            font-size: 34px;
            top: 32px;
            /* right: 80px; */
            left: -17px;
        }
        .sharp_square .quarter_round {
            position: absolute;
        }
        .quarter_round{
            display:inline-block; 
            width:8px; 
            height:8px; 
            overflow:hidden; 
            font-family:'宋体';
        }
        .quarter_round span{
            display:inline-block; 
            font-size:16px; 
            line-height:1;
        }
        .sharp_square .round_lt {
            left: -1px;
            top: -1px;
        }
        .sharp_square .round_rt {
            right: -1px;
            top: -1px;
        }
        .sharp_square .round_lb {
            left: -1px;
            bottom: 0px;
        }
        .sharp_square .round_rb {
            right: -1px;
            bottom: 0px;
        }
        .content_square{
            color: #fff;
            padding: 20px;
            font-size: 14px;
        }
        .sharp_square .quarter_round span {
            background: white;
        }
        .quarter_round .lt{}
        .quarter_round .rt{margin-left:-7px;}
        .quarter_round .lb{
            position: absolute;
            left: 0px;
            top: -6px;
        }
        .quarter_round .rb{
            position: absolute;
            /* left: 0px; */
            top: -5px;
            right: -1px;
        }
        .square_out_border {
            width: 472px;
            border: 1px solid #dadada;
            background: #f8f8f8;
            position: relative;
            color: #dadada;
        }
        .square_inner_border {
            border: 1px solid #ffffff;
            padding: 20px;
            font-size: 14px;
            color: #333333;
        }
        .square_top_corner{
            line-height: 1;
            height: 15px;
            font-size: 30px;
            position: absolute;
            top: -15.99px;
            right: 80px;
        }
        .square_top_corner2 {
            line-height: 1;
            font-size: 30px;
            color: #f8f8f8;
            position: absolute;
            top: 2px;
            right: 0;
        }
        .square_out_border .round_lt {
            left: -3px;
            top: -3px;
        }
       
        .square_out_border .quarter_round {
            position: absolute;
            z-index: 1;
        }
       
        .quarter_round {
            display: inline-block;
            width: 8px;
            height: 8px;
            overflow: hidden;
            font-family: '宋体';
        }
        .square_out_border .quarter_round span {
            background: #f8f8f8;
        }
        
        .quarter_round .lt {
        }
         
        .quarter_round span {
            display: inline-block;
            font-size: 16px;
            line-height: 1;
        }
        .square_out_border .round_lb {
            left: -3px;
            bottom: -1px;
        }
        .square_out_border .round_rb {
            right: -2px;
            bottom: -1px;
        }
        .square_out_border .round_rt {
            right: -2px;
            top: -4px;
        }
        .square_out_border .round_lt2 {
            left: -2px;
            top: -2px;
        }
         
        .square_out_border .quarter_round2 {
            color: #f8f8f8;
            z-index: 2;
        }
        .square_out_border .round_rt2 {
            right: -1px;
            top: -3px;
        }
         
        .square_out_border .quarter_round2 {
            color: #f8f8f8;
            z-index: 2;
        }
        .square_out_border .round_lb2 {
            left: -2px;
            bottom: 0px;
        }
        
        .square_out_border .quarter_round2 {
            color: #f8f8f8;
            z-index: 2;
        }
        .square_out_border .round_rb2 {
            right: -1px;
            bottom: 0px;
        }
        
        .square_out_border .quarter_round2 {
            color: #f8f8f8;
            z-index: 2;
        }
        .square_out_border .quarter_round2 span {
            background: none;
        }
        .method4{
            float: left;
        }
        .con1{
            float: left;
        }
        .method3{
            margin: 0 auto;
        }
        .method3 .zxx_ul_image{
            display: inline-block;
            margin-left: 100px;
        }
    </style>
</head>
<body>
    <div class="demo-container">
            <div class="header">
                    <i>
                        <b>字符圆角和尖角实现对话框</b>
                    </i>
                </div>
        <div class="method-title">
            对话框
        </div>
        <div class="method-container">
            <div class="method4">
                <ul class="zxx_ul_image">
                    <li>
                        <img src=".././images/monkey.jpg" />
                    </li>                    
                </ul>
            </div>
            <div class="ml20 con1">
                <div class="sharp_square mt20">
                    <span class="sharp_top_corner">◄</span>
                    <span class="quarter_round round_lt"><span class="lt">●</span></span>
                    <span class="quarter_round round_rt"><span class="rt">●</span></span>
                    <span class="quarter_round round_lb"><span class="lb">●</span></span>
                    <span class="quarter_round round_rb"><span class="rb">●</span></span>
                    <div class="content_square"><span>以四分之一实体圆填充四个角,添加尖角符,实现带尖角的实色圆角矩形。</span></div>
                </div>
            </div>
            <br style="clear:both">
        </div>
        <div class="method-container">
            <div class="method3">
                <ul class="zxx_ul_image">
                    <li>
                        <img src=".././images/insect.jpg" />
                    </li>
                </ul>
            </div>
            <div class="ml20">
                <div class="square_out_border mt20">
                    <span class="square_top_corner">◆
                        <span class="square_top_corner2">◆</span>
                    </span>
                    <span class="quarter_round round_lt">
                        <span class="lt">●</span>
                    </span>
                    <span class="quarter_round round_rt">
                        <span class="rt">●</span>
                    </span>
                    <span class="quarter_round round_lb">
                        <span class="lb">●</span>
                    </span>
                    <span class="quarter_round round_rb">
                        <span class="rb">●</span>
                    </span>
                    <div class="square_inner_border">
                        以四分之一实体圆填充四个角,重复一次,1像素错位。添加尖角符,2像素上下错位,矩形双层标签,实现最终的双边框效果。
                    </div>
                    <span class="quarter_round quarter_round2 round_lt2">
                        <span class="lt">●</span>
                    </span>
                    <span class="quarter_round quarter_round2 round_rt2">
                        <span class="rt">●</span>
                    </span>
                    <span class="quarter_round quarter_round2 round_lb2">
                        <span class="lb">●</span>
                    </span>
                    <span class="quarter_round quarter_round2 round_rb2">
                        <span class="rb">●</span>
                    </span>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

  google下效果图:

ie11效果图

  

 

posted @ 2017-12-08 14:31  柠檬张先生  阅读(383)  评论(0编辑  收藏  举报