如何制作虚线霓虹边框?

Posted

技术标签:

【中文标题】如何制作虚线霓虹边框?【英文标题】:How to make a dotted neon border? 【发布时间】:2016-07-28 11:59:10 【问题描述】:

我做了一个霓虹边框https://jsfiddle.net/cf3cec6c/

    bodybackground:black;
    h1 
        color: white;
    
    .wrapper
    position: reltive;
     z-index: 999;             
        border:1px solid red;
        margin-top: 10px;
        margin-bottom: 10px;
        margin-right: 10px;
       
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    
      border: 3px solid #0cd808;
     box-shadow: 0 0 1px #b3ff51, 0 0 2px #b3ff51, 0 0 6px #b3ff51, 0 0 12px #b3ff51, inset 0 0 1px #b3ff51, inset 0 0 2px #b3ff51, inset 0 0 6px #b3ff51, inset 0 0 12px #b3ff51;
    
    
    <div class="wrapper">
      <h1> hello hello hello hello
        hello hello hello hello
        hello hello hello hello
        hello hello hello hello
        <br>
         hello hello hello hello
        hello hello hello hello
        hello hello hello hello
        hello hello hello hello
        <br>
         hello hello hello hello
        hello hello hello hello
        hello hello hello hello
        hello hello hello hello
      </h1>
    </div>

我怎样才能把它变成一个像这样的虚线:

【问题讨论】:

如果你想做一些非常复杂的事情,你可能想看看border-image。 这可以帮助你:codepen.io/luclemo/pen/xbMdEx 【参考方案1】:

我能想到的最好方法是使用边框图像(我相信有人在之前的回答中提到过),您必须根据自己的喜好调整图像,但这可能是最好的方法。这是一个例子:

border-style: solid;
border-width: 27px;
-moz-border-image: url(https://i.imgur.com/akKZqkx.png) 27;
-webkit-border-image: url(https://i.imgur.com/akKZqkx.png) 27;
-o-border-image: url(https://i.imgur.com/akKZqkx.png) 27;
border-image: url(https://i.imgur.com/akKZqkx.png) 27 fill;

您可以在下面看到正在运行的边框:

http://border-image.com/#%7B%22src%22%3A%22https%3A%2F%2Fi.imgur.com%2FakKZqkx.png%22%2C%22linkBorder%22%3Atrue%2C%22borderWidth%22%3A%5B0%2C0%2C0%2C0%5D%2C%22imageOffset%22%3A%5B27%2C27%2C27%2C27%5D%2C%22fill%22%3Atrue%2C%22setRepat%22%3Afalse%2C%22repeat%22%3A%5B%22round%22%2C%22round%22%5D%2C%22scaleFactor%22%3A3%2C%22setRepeat%22%3Afalse%7D

这里是虚线版本: http://border-image.com/#%7B%22src%22%3A%22https%3A%2F%2Fi.imgur.com%2FWJEmP3v.png%22%2C%22linkBorder%22%3Atrue%2C%22borderWidth%22%3A%5B0%2C0%2C0%2C0%5D%2C%22imageOffset%22%3A%5B27%2C27%2C27%2C27%5D%2C%22fill%22%3Atrue%2C%22setRepat%22%3Afalse%2C%22repeat%22%3A%5B%22repeat%22%2C%22repeat%22%5D%2C%22scaleFactor%22%3A3%2C%22setRepeat%22%3Atrue%7D

【讨论】:

【参考方案2】:

您可以尝试将border-style: dotted 样式添加到您的.wrapper 类:

.wrapper
    /* omitted for brevity */
    border-style: dotted;

这可能无法为您提供所需的样式,但请记住,如果您想处理一些复杂的边框样式,最好使用border-image 样式。你甚至可以use an online generator like the one seen here 告诉你你的边框会是什么样子。

如果您不介意添加大量 html 并且不想使用 border-image 方法,您可以实现如下内容:

<div class='border-outer'>
   <div class='border-inner'>
      <div class='content'>
          This is a test
      </div>
   </div>
</div>
<style type='text/css'>
    .border-outer 
        outline: 5px solid red
    
    .border-inner 
        background: red;
        border: 5px dotted #fff;
    
    .content 
       background: #000; 
       color: #FFF;
       height: 80px;
       padding: 10px;
       border: 5px solid red;
    
</style>

可以在this example 中看到,并且会呈现如下内容:

它绝不是完美的,甚至不是优雅的,但它有点类似于您的目标图像。您最好使用像 this one 这样的示例,它严重依赖 CSS,但会产生非常好的霓虹灯效果(无点):

【讨论】:

不,这不起作用。它给出黑点而不是将整个边框转换为点 听起来你会更好地使用我的编辑建议的border-image 样式。我建议使用像 this one 这样的生成器,它可以让你得到你正在寻找的模式。 谢谢,但您知道除边框图像之外的其他方法吗?我可以对包装器进行任何更改以获得所需的结果吗? 我用两个例子编辑了我的回复。一个依赖于一些额外的 HTML 来围绕特定元素构建边框,另一个示例将给你一个真正的“霓虹灯”效果,虽然它没有点,但它可能会接近你想要的效果而不诉诸使用border-image【参考方案3】:

请试试这个:

.wrapper 
    border: 6px dotted #0cd808;

【讨论】:

以上是关于如何制作虚线霓虹边框?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作漂亮的霓虹灯效果?

如何制作虚线渲染器并通过强制更改颜色

带有闪烁边框的表格单元格

Java NASA Worldwind 多边形与内部边界

如何制作加粗的边框表格?

如何在 UIView 周围制作自定义边框?