CSSを使用してラインエンドをウェッジ/三角形で装飾する方法はありますか?

PeterTheLobster

を使用してPDFに変換される請求書のHTML / CSSテンプレートに取り組んでいますwkhtmltopdfデザインの一部は、次のように見える要素です。

ここに画像の説明を入力してください

要素内のテキストは可変長にすることができます。要素の背後にあるロジックは非常に単純です。改行が存在する場合は常に、行の終わりをくさびで飾ります。css-tricks.comでMatthew Pennell's Triple Element Method紹介されているように、各行にパディングを追加しました必要に応じて調整しました。

.padded-multiline {
    line-height: 1.4;
    padding: 0.005in 0;
    border-left: 0.16in solid #E7E7E9;
}
.padded-multiline p {
    background-color: #E7E7E9;
    padding: 0.02in 0;
    display: inline;
    margin: 0;
}
.padded-multiline p span {
    position: relative;
    left: -0.08in;
}

問題は、くさびで線を飾る方法がわからないことです。CSSソリューションが欲しいのですが、これが実際に実現できるかどうかはわかりません。テキストが1行だった場合、要素の後に灰色のCSS三角形をかなり簡単に追加できました。または、同じ効果を実現する白い背景上の三角形で構成される背景画像を追加することもできます。しかし、要素が複数行であるため、アイデアが不足しています。

background-repeat: repeat-yネストされた要素での使用は、最後の行に背景を追加するだけなので、私が期待するようには機能しないようです。::first-line疑似セレクターがあることは知っていますが、私が理解していることから::nth-line、同じタイプの数量詞はないか、他にありません

現時点では、JavaScriptを使用してテキストを個々の要素に分割し、それらを複数行の要素ではなく複数の単一行の要素として扱うことが唯一の実行可能な解決策であると思います。しかし、JavaScriptの使用は避けたかったのです。それは、PDF生成にオーバーヘッドが増え、私にとってはちょっとハックな感じがするからです。

何か案は?

注意:

wkhtmltopdfおよびwkhtmltoimageは、Qt WebKitレンダリングエンジンを使用してHTMLをPDFおよびさまざまな画像形式にレンダリングするためのオープンソース(LGPLv3)コマンドラインツールです。

アフィフに同行

手動で改行を挿入しないという事実を考慮すると、最後の行だけが最後まで埋められず、前のすべての行が埋められます。次に、最後のエッジだけを検討し、他のエッジを一緒に検討することができます。

ここにアイデアがあります:

p {
 line-height:20px;
 padding:0 30px;
 background:
  linear-gradient(to top left,#fff 49%,transparent 50%) top right/20px 20px repeat-y,
  grey;
  overflow:hidden;
}
span {
  position:relative;
  display:inline-block;
  vertical-align:bottom;
}
span:before {
  content:"";
  position:absolute;
  left:30px; /*equal to padding*/
  bottom:0px;
  height:20px; /*equal to line-height*/
  background:
    linear-gradient(to top left,#fff 49%,grey 50%) top left/20px 20px no-repeat,
    #fff;
  right:-100vw;
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tellus ipsum, posuere a tincidunt non, consectetur et mi. Sed congue ornare lorem, et placerat velit tempus nec. Phasellus fringilla eleifend vestibulum. Nunc lobortis ipsum a nisi dignissim sollicitudin. Ut elit leo, ultrices mollis metus non,<span></span> </p>

改行が必要な場合は<br>、使用せずに多くのpタグを使用してください。

p {
 line-height:20px;
 padding:0 30px;
 background:
  linear-gradient(to top left,#fff 49%,transparent 50%) top right/20px 20px repeat-y,
  grey;
  overflow:hidden;
  margin:0;
}
span {
  position:relative;
  display:inline-block;
  vertical-align:bottom;
}
span:before {
  content:"";
  position:absolute;
  left:30px; /*equal to padding*/
  bottom:0px;
  height:20px; /*equal to line-height*/
  background:
    linear-gradient(to top left,#fff 49%,grey 50%) top left/20px 20px no-repeat,
    #fff;
  right:-100vw;
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tellus ipsum, posuere a tincidunt non,  Ut elit leo, ultrices mollis metus non,<span></span> </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tellus ipsum, posuere a tincidunt non, consectetur et mi. Sed congue ornare lorem, et placerat velit tempus nec. Ut elit leo, ultrices mollis metus non,<span></span> </p>

更新

グラデーションの代わりに、単純な画像またはSVGを使用できます。

p {
  line-height: 20px;
  padding: 0 30px;
  background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 20 20" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><polygon points="20 20,0 20, 20 0" fill="white" /></svg>') top right/20px 20px repeat-y;
  background-color: grey;
  overflow: hidden;
  margin: 0;
}

span {
  position: relative;
  display: inline-block;
  vertical-align: bottom;
}

span:before {
  content: "";
  position: absolute;
  left: 30px; /*equal to padding*/
  bottom: 0px;
  height: 20px; /*equal to line-height*/
  background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 20 20" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><polygon points="0 0,0 20, 20 0" fill="grey" /></svg>') top left/20px 20px no-repeat;
  background-color: #fff;
  right: -100vw;
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tellus ipsum, posuere a tincidunt non, Ut elit leo, ultrices mollis metus non,<span></span> </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tellus ipsum, posuere a tincidunt non, consectetur et mi. Sed congue ornare lorem, et placerat velit tempus nec. Ut elit leo, ultrices mollis metus non,<span></span> </p>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

エッジ/ラインから三角形を作成する効率的な方法は?

分類Dev

三角形が不等辺三角形、二等辺三角形、正三角形、または三角形でないかどうかをチェックするJAVAプログラム

分類Dev

RでChainLadder損失三角形の列をスライスする方法はありますか?

分類Dev

:: afterを使用してCSS三角形を配置する方法は?

分類Dev

Javaを使用して三角形(半ピラミッド)パターンを印刷する

分類Dev

フロイドの三角形のパターンで数字をジグザグにする方法は?

分類Dev

pygameで三角形の中点を見つけて、それを繰り返し実行してシェルピンスキーの三角形を作成するにはどうすればよいですか?

分類Dev

テッセレーションされたデータを使用して、点から三角形までの最短距離を計算する方法

分類Dev

エラー:webglで三角形のファンを使用して円を描く方法は?

分類Dev

CSS-ドロップダウン矢印をUnicode三角形に変更します

分類Dev

ポイントが2D三角形にあるかどうかを判断する方法は?

分類Dev

一部の三角形を他の三角形の後に描画させる方法はありますか?

分類Dev

CSSのみを使用して三角形のアニメーションを作成する方法

分類Dev

サブクラスを使用してUIButtonにドロップダウン三角形を追加しました。タイトルを変更したときに、UIButtonが伸びないようにするにはどうすればよいですか?

分類Dev

角度マテリアルを使用してドロップダウンに三角形を追加する方法

分類Dev

OpenGLで三角形を使用して文字を描画しますか?

分類Dev

Rで三角形メッシュをインポートしてプロットするにはどうすればよいですか?

分類Dev

Python OpenGLは、四辺形のすべての三角形をレンダリングするわけではありません

分類Dev

三角形が長方形かどうかをすばやく判断する方法はありますか?

分類Dev

glDrawElementsは、インデックスで指定された最初の三角形のみを描画します

分類Dev

移動するスライドに角の三角形を追加できますか?

分類Dev

C ++でポリゴンを正しく三角形分割する方法

分類Dev

逆三角形を作る必要があります

分類Dev

三角形の頂点の座標(各三角形に9つの数字)を使用してmatplotlibに3D三角形をプロットする方法は?

分類Dev

CSS3 で線形グラデーションを使用して三角形の色の背景を交互に配置する

分類Dev

三角形をドラッグアンドドロップします

分類Dev

MacOSでXcodeでopenGLとGLUTを使用して、三角形を描画する黒いウィンドウのみ

分類Dev

誰かが3つの頂点を与えられたDDAスキャンラインを使用して三角形を描くためのロジックを説明できますか?

分類Dev

cssで中空三角形を作成する方法

Related 関連記事

  1. 1

    エッジ/ラインから三角形を作成する効率的な方法は?

  2. 2

    三角形が不等辺三角形、二等辺三角形、正三角形、または三角形でないかどうかをチェックするJAVAプログラム

  3. 3

    RでChainLadder損失三角形の列をスライスする方法はありますか?

  4. 4

    :: afterを使用してCSS三角形を配置する方法は?

  5. 5

    Javaを使用して三角形(半ピラミッド)パターンを印刷する

  6. 6

    フロイドの三角形のパターンで数字をジグザグにする方法は?

  7. 7

    pygameで三角形の中点を見つけて、それを繰り返し実行してシェルピンスキーの三角形を作成するにはどうすればよいですか?

  8. 8

    テッセレーションされたデータを使用して、点から三角形までの最短距離を計算する方法

  9. 9

    エラー:webglで三角形のファンを使用して円を描く方法は?

  10. 10

    CSS-ドロップダウン矢印をUnicode三角形に変更します

  11. 11

    ポイントが2D三角形にあるかどうかを判断する方法は?

  12. 12

    一部の三角形を他の三角形の後に描画させる方法はありますか?

  13. 13

    CSSのみを使用して三角形のアニメーションを作成する方法

  14. 14

    サブクラスを使用してUIButtonにドロップダウン三角形を追加しました。タイトルを変更したときに、UIButtonが伸びないようにするにはどうすればよいですか?

  15. 15

    角度マテリアルを使用してドロップダウンに三角形を追加する方法

  16. 16

    OpenGLで三角形を使用して文字を描画しますか?

  17. 17

    Rで三角形メッシュをインポートしてプロットするにはどうすればよいですか?

  18. 18

    Python OpenGLは、四辺形のすべての三角形をレンダリングするわけではありません

  19. 19

    三角形が長方形かどうかをすばやく判断する方法はありますか?

  20. 20

    glDrawElementsは、インデックスで指定された最初の三角形のみを描画します

  21. 21

    移動するスライドに角の三角形を追加できますか?

  22. 22

    C ++でポリゴンを正しく三角形分割する方法

  23. 23

    逆三角形を作る必要があります

  24. 24

    三角形の頂点の座標(各三角形に9つの数字)を使用してmatplotlibに3D三角形をプロットする方法は?

  25. 25

    CSS3 で線形グラデーションを使用して三角形の色の背景を交互に配置する

  26. 26

    三角形をドラッグアンドドロップします

  27. 27

    MacOSでXcodeでopenGLとGLUTを使用して、三角形を描画する黒いウィンドウのみ

  28. 28

    誰かが3つの頂点を与えられたDDAスキャンラインを使用して三角形を描くためのロジックを説明できますか?

  29. 29

    cssで中空三角形を作成する方法

ホットタグ

アーカイブ