有没有办法在HTML中多次使用同一代码代码可重用性?

如何解决有没有办法在HTML中多次使用同一代码代码可重用性?

我正在为我的投资组合网站创建“项目”页面,在每个项目的名称之前添加一个SVG图标。由于SVG Icon的代码非常大,因此我希望它可以执行与编程语言中的功能相似的操作,但是我不知道该怎么做。

这是我的代码的一部分:

 <section>
    <div class="container">
        <div class="row">
            <div>
                <h5 class="card-title">
                    <svg role="img" viewBox="0 0 20 20" height="20px" width="20px">
                        <path fill="#000000" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z">
                        </path>
                    </svg>
                </h5>
                <!-- More Stuff here -->
            </div>

            <div>
                <h5 class="card-title">
                    <svg role="img" viewBox="0 0 20 20" height="20px" width="20px">
                        <path fill="#000000" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z">
                        </path>
                    </svg>
                </h5>
                <!-- More Stuff here -->
            </div>
        </div>
    </div>
</section>

代码段包含两个SVG图标,但页面中有很多图标(具有较大的代码),这些图标已多次使用。因此,多次编写同一代码效率低下。如果我们只需要编写一次代码,然后就可以在整个HTML文件中的任何地方使用它,那就太好了。

我已经看到了一些答案,但是他们使用的是JQuery,PHP等。我想知道是否可以仅使用 HTML / CSS / Bootstrap 来做到这一点。

如果没有,那么是否可以使用 JavaScript (我是JS的初学者)来做到这一点。

如果您需要检查整个代码https://devansh-07.github.io/projects.html

解决方法

我会从您的html中完全删除svg个文件(这是语义上的拖动),因此我将使用定义一个类,然后将其自动添加到h5或该类中,请参见下面的演示

CSS的本意是:定义一次-重用x次!但是由于过多的框架,人们如今往往会忘记它,而没有什么..

.card-title::before{
  content: "";
  display: inline-block;
  width: 20px;
  height: 20px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' role='img' viewBox='0 0 20 20' height='20px' width='20px'%3E%3Cpath fill='%23000000' d='M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z'%3E%3C/path%3E%3C/svg%3E");
}
<section>
  <div class="container">
    <div class="row">
      <div>
        <h5 class="card-title">
          Title 1
        </h5>
        <!-- More Stuff here -->
      </div>

      <div>
        <h5 class="card-title">
          Title 2
        </h5>
        <!-- More Stuff here -->
      </div>
    </div>
  </div>
</section>

我已经借助这个功能强大且免费的SVG > CSS在线转换器对您的svg进行了转换-如果需要其他任务,请在这里尝试一下

https://yoksel.github.io/url-encoder/

不客气:)

,

您可以使用此代码段。将其插入文档中的</body>标记之前。比起您可以从原始标记中删除svg的方式。

<script>
document.addEventListener('DOMContentLoaded',function(){
   var titles = document.querySelectorAll('.card-title');
    for (i=0;i<titles.length;i++) {
        var span = document.createElement('span');
        span.innerHTML = '<svg role="img" viewBox="0 0 20 20" height="20px" width="20px"><path fill="#ffffff" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"></path></svg>';
        titles[i].prepend(span);
    }
})
</script>
,

您可以将Blade Templates与Laravel一起使用,也可以将Twig Templates与Symfony一起使用,也可以在Django中进行此操作。如果您有MVC框架,则可以使用一种方法在所有控制器中使用视图。就像使用$this->view('route..',$data);进行调用的CodeIgniter 3一样。然后,您可以使用svg大代码将所有变量传递给它们,并在模板中打印。

在Laravel Blade中,是这样的:

@include('route/viewname',['svgcode' => '...'])

在Symfony Twig中是这样的:

{% include 'route/viewname.twig' 
     with {'svgcode': '...'} %}

在没有框架的PHP中:

<?php
  $svgcode = '...';
  include 'route/viewname.php';
?>

在CodeIgniter 3中:

$data['svgcode'] = '...'
$this->view('route/viewname',$data);

在Django中:

{% include "route/viewname.html" with svgcode = "..." %}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?