如何在 HTML-CSS 中切换图像? [复制]

Posted

技术标签:

【中文标题】如何在 HTML-CSS 中切换图像? [复制]【英文标题】:how to toggle image in HTML-CSS? [duplicate] 【发布时间】:2016-01-10 21:32:51 【问题描述】:

我正在尝试切换图像,我搜索了网络但找不到适合我的场景的解决方案。我在右侧选项卡式菜单上有三个按钮。默认情况下,它会加载第一个 DIV,然后当我单击第二个按钮时,它会加载类似于第三个的第二个 div。现在我的按钮在背景中有一个图像。我想通过切换图像来显示哪个 div 处于活动状态

现在看到这张图片 这是我的菜单 第一个是活动的 这是一个 li 标签,我已经将背景设置为那个 li 现在当我点击第二个选项卡时,我想将三个选项卡中的图像更改为:第一个将与线和一个活跃的没有线..

也许它太混乱了:(

这是代码::

<!DOCTYPE html>
<html>

<head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
    <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
</head>

<body>
    <div id="tabs">
        <ul style="float:right">
            <li>
                <a href="#a" class="clickable"></a>
            </li>
            <li>
                <a href="#b" class="bizrtc"></a>
            </li>
            <li>
                <a href="#c" class="lab"></a>
            </li>
        </ul>
        <div id="a">
            <object type="text/html" data="home.html"   style="overflow:auto;"> </object>
        </div>
        <div id="b">
            <object type="text/html" data="contact.html"   style="overflow:auto;"></object>
        </div>
        <div id="c">
            <object type="text/html" data="blog.html"   style="overflow:auto;"></object>
        </div>
    </div>
    <script>
        $("#siteloader").html('<object data="home.html">');
    </script>
    <style type="text/css">
    .ui-tabs.ui-tabs-vertical 
            padding: 0;
            width: 104%;
        

        .ui-tabs.ui-tabs-vertical .ui-widget-header 
            border: none;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-nav 
            float: left;
            width: 4em;
            border-radius: 4px 0 0 4px;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-nav li 
            clear: left;
            width: 100%;
            margin: -52px 0px;
            height: 230px;
            border-width: 1px 0 1px 1px;
            border-radius: 4px 0 0 4px;
            overflow: hidden;
            position: relative;
            right: 38px;
            z-index: 2;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-nav li a 
            display: block;
            width: 100%;
            padding: 0.6em 1em;
            height: inherit;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-nav li a:hover 
            cursor: pointer;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active 
            margin-bottom: -52px;
            padding-bottom: 0;
            border-right: 1px solid white;
            height: 230px;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-nav li:last-child 
            margin-top: -52px;
        

        .ui-tabs.ui-tabs-vertical .ui-tabs-panel 
            float: left;
            width: 28em;
            border-left: 1px solid gray;
            border-radius: 0;
            position: relative;
            left: -1px;
        

        .clickable 
            background: url(buttons/umobility_button_active.png) no-repeat 6px center;
        

        .bizrtc 
            background: url(buttons/labs_button.png) no-repeat 6px center;
        

        .lab 
            background: url(buttons/rtcbiz_button.png) no-repeat 6px center;
        
    
    </style>
</body>
<script type="text/javascript">
    $('#tabs').tabs().addClass('ui-tabs-vertical ui-helper-clearfix');
</script>

</html>

【问题讨论】:

您可以在单击它们时添加一个名为“活动”的类,然后在包含该活动类时创建一个具有不同背景图像的新 CSS 规则 但我已将它们设置在后台我可以更改它们> ...是的。您只需创建一个包含活动类的新 CSS 规则,并使用不同的图像。 我的 css 规则应该是什么?我对他们了解不多,我只是仔细阅读了一个教程并完成了这个 jQuery UI 选项卡已经负责处理类“ui-tabs-active”,只要单击特定选项卡。您只需要为活动场景编写 CSS。请参阅@J.D. 的答案。下面的奴仆,完美。 【参考方案1】:

包含另一个状态的 CSS 规则如下所示:

.clickable.active 
   background: url(buttons/umobility_button_active.png) no-repeat 6px center;


.bizrtc.active 
  background: url(buttons/labs_button_active.png) no-repeat 6px center;  


.lab.active 
  background: url(buttons/rtcbiz_button_active.png) no-repeat 6px center;  

不过,您需要使用 jquery onClick 调用选项卡。

$("#tabs li a").click(function() 
    $(this).addClass('active');
);

【讨论】:

这可行,但我只想将一个显示为活动的。所以现在发生的事情是最初只有第一个处于活动状态,然后当我点击第一个和第二个时,当我点击第三个时,所有 thre 都处于活动状态,所以一次只有一个应该处于活动状态 试试这个 $("#tabs li a").click(function() $("#tabs li a").removeClass('active'); $(this).addClass( '活动'); ); @PrabhuSuriya 这有效,但不适用于第一个标签,它始终保持活动状态【参考方案2】:

请仔细阅读代码中的 css。只需添加到您现有的块中

.ui-tabs.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active 
  margin-bottom: -52px;
  padding-bottom: 0;
  border-right: 1px solid white;
  height: 230px;

另一个规则,例如

background-image:url( path-to-file );

这样的块
li.ui-tabs-active.a  new rule for class a 
li.ui-tabs-active.b  new rule for class b 
li.ui-tabs-active.c  new rule for class c 

toggle 功能来自 jquery ui,所以没有什么可做的。

【讨论】:

以上是关于如何在 HTML-CSS 中切换图像? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Html-Css 图像拉伸

AWS postgres RDS 读取复制如何处理架构切换?

在opencv中,如何将灰度图像复制并缩放为另一个彩色图像

如何仅使用for循环在matlab中裁剪图像? [复制]

HTML-CSS样式

使用放大效果切换图像