Линия с эффектом градиента по обе стороны содержимого

by akogch

HTML

<!-- В нижеприведенном фрагменте тонкий градиент слева направо используется для создания эффекта линии, идущей от сплошного цвета рядом с содержимым до прозрачного с другой стороны. -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<h3 class='heading'>Something broader</h3>
<h3 class='heading'>Something broader and broader</h3>
<h3 class='heading'>Something broader<br/> and spans multiple <br/> no. of lines</h3>

<!-- IE11 specific version -->

<h3 class='heading-ie'>
  <span class='before'></span>
  <!-- IE11 supports flex-grow only on actual elements -->
  Something broader and broader and broader
  <span class='after'></span>
  <!-- IE11 supports flex-grow only on actual elements -->
</h3>

<div>Недостатком этого подхода является поддержка браузера для этой функции, которая на данный момент довольно низкая. Возможно, вам также придется принять некоторые настройки, специфичные для браузера, которые подробно описаны в моем ответе здесь, который аналогичен этому.</div>

CSS

h3 {
  display: flex;
  flex: 1;
  width: 70%;
  margin: 20px auto;
  line-height: 1em;
}

.heading:before,
.heading:after,
.heading-ie span.after,
.heading-ie span.before {
  content: '';
  flex-grow: 1;
  margin: 0px 4px;
  background-size: 100% 2px;
  background-position: 0% 50%;
  background-repeat: repeat-x;
}

.heading:before,
.heading-ie span.before {
  background-image: linear-gradient(to right, transparent, white);
}

.heading:after,
.heading-ie span.after {
  background-image: linear-gradient(to left, transparent, white);
}

/* Just for demo*/

body {
  background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
}