剪切背景以露出下面的图层

2024-03-18

有没有办法剪切 div 背景以暴露下面的图层?,就像这样:

to this:

欢迎任何前沿的 CSS 规则!

UPDATE

好的,我做了一个示例代码:http://jsfiddle.net/coma/9ae7g/1/ http://jsfiddle.net/coma/9ae7g/1/

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Menu</title>
        <style type="text/css">
            @charset 'UTF-8';

            body {
                padding: 0;
                margin: 0;
                font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, Arial, sans-serif;
                font-size: 12px;
                background: #fff url("http://colourlovers.com.s3.amazonaws.com/images/patterns/1762/1762793.png?1314797062");
            }

            a {
                text-decoration: none;
            }

            #menu {
                position: fixed;
                top: 0;
                left: 0;
                bottom: 0;
                width: 250px;
            }

            body.wide>#menu {
                width: 0;
            }

            #menu * {
                line-height: 1em;
            }

            #menu:after {
                content: '';
                position: absolute;
                top: 0;
                right: 0;
                width: 5px;
                height: 100%;
                border-right: 1px solid #666;
                pointer-events: none;
                background: -moz-linear-gradient(left,  rgba(0,0,0,0) 0%, rgba(0,0,0,0.25) 100%);
                background: -webkit-linear-gradient(left,  rgba(0,0,0,0) 0%,rgba(0,0,0,0.25) 100%);
                background: -o-linear-gradient(left,  rgba(0,0,0,0) 0%,rgba(0,0,0,0.25) 100%);
                background: -ms-linear-gradient(left,  rgba(0,0,0,0) 0%,rgba(0,0,0,0.25) 100%);
                background: linear-gradient(to right,  rgba(0,0,0,0) 0%,rgba(0,0,0,0.25) 100%);
            }

            #menu ul, #menu li {
                padding: 0;
                margin: 0;
                list-style: none;
                background-color: #fafafb;
            }

            #menu li {
                position: relative;
            }

            #menu>a {
                position: absolute;
                left: 100%;
                top: 50%;
                z-index: 1;
                display: block;
                width: 10px;
                height: 20px;
                margin: -10px 0 0 0;
                text-indent: -100em;
                overflow: hidden;
                border-radius: 0 2px 2px 0;
                background-color: #666;
                transition: background-color .3s ease-out;
                -moz-transition: background-color .3s ease-out;
                -webkit-transition: background-color .3s ease-out;
                -o-transition: background-color .3s ease-out;
                -ms-transition: background-color .3s ease-out;
            }

            #menu>a:before {
                position: absolute;
                top: 5px;
                right: 4px;
                display: block;
                content: '';
                border-width: 5px 6px 5px 0;
                border-style: solid;
                border-color: transparent #fff transparent transparent;
            }

            body.wide>#menu>a:before {
                right: 2px;
                border-width: 5px 0 5px 6px;
                border-color: transparent transparent transparent #fff;
            }

            #menu>ul {
                height: 100%;
                background-color: #888;
                overflow: hidden;
            }

            #menu>ul span, #menu>ul a {
                display: block;
                padding: .4em;
                color: #666;
                font-weight: bold;
                border-bottom: 1px solid #999;
            }

            #menu>ul a {
                border-top: 1px solid #fff;
                border-bottom: 1px solid #e9ecee;
            }

            #menu>ul>li>span {
                font-size: 1.25em;
                font-weight: bold;
                color: #666;
                text-shadow: 0 1px 1px #fff;
                background-color: #eee;
                background-image: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
                background-image: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
                background-image: -o-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
                background-image: -ms-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
                background-image: linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
                cursor: pointer;
                transition: background-color .4s;
                -moz-transition: background-color .4s;
                -webkit-transition: background-color .4s;
                -o-transition: background-color .4s;
                -ms-transition: background-color .4s;
            }

            #menu>ul>li>span:hover {
                background-color: #fff;
            }

            #menu>ul>li>ul {
                display: none;
            }

            #menu>ul>li.opened>ul, #menu>ul>li.current_ancestor>ul {
                display: block;
            }

            #menu>ul>li>ul>li>a {
                font-size: 1.2em;
                color: #4183c4;
                transition: background-color .4s;
                -moz-transition: background-color .4s;
                -webkit-transition: background-color .4s;
                -o-transition: background-color .4s;
                -ms-transition: background-color .4s;
            }

            #menu>ul>li>ul>li.current>a, #menu>ul>li>ul>li.current>a:hover {
                color: #fff;
                background-color: #39f;
                border-color: #39f;
            }

            #menu>ul>li>ul>li.current:after {
                content: '';
                position: absolute;
                right: -1px;
                top: 50%;
                margin: -9px 0 0 0;
                display: block;
                border-width: 10px 10px 10px 0;
                border-style: solid;
                border-color: transparent #fff transparent transparent;
                z-index: 1;
            }

            #menu>ul>li>ul>li>a:hover {
                background: #fff;
            }

            #menu>ul>li>ul>li:last-child {
                border-bottom: 1px solid #aaa;
            }

            #menu>ul>li>ul>li[data-count]:after {
                position: absolute;
                top: 50%;
                right: 14px;
                display: block;
                content: attr(data-count);
                padding: .26em .5em;
                background-color: #fff;
                border-radius: 8px;
                font-size: 12px;
                margin: -9px 0 0 0;
                color: #777;
                border-top: 1px solid #ccc;
            }

            #section {
                height: 2000px;
            }
        </style>
    </head>
    <body>      
        <div id="menu">
            <a title="cerrar o abrir el menú" href="#">toggle</a>
            <ul>
                <li class="first opened">
                    <span>Usuario</span>
                    <ul class="menu_level_1">
                        <li class="first">
                            <a href="/logout">Logout</a>
                        </li>
                        <li class="current">
                            <a href="/">Home</a>
                        </li>
                        <li>
                            <a href="/user/">Usuarios</a>
                        </li>
                        <li class="last">
                            <a href="/discount/">Descuentos</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <span>Artistas</span>
                    <ul class="menu_level_1">
                        <li class="first">
                            <a href="/artist/">Artistas</a>
                        </li>
                        <li class="last">
                            <a href="/artists/top10">Top 10 (3)</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <span>Obras</span>
                    <ul class="menu_level_1">
                        <li class="first">
                            <a href="/artwork/">Obras</a>
                        </li>
                        <li>
                            <a href="/artworks/destacadas">Destacadas (4)</a>
                        </li>
                        <li class="last">
                            <a href="/artworks/ofertas">Ofertas (3)</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <span>Pedidos</span>
                    <ul class="menu_level_1">
                        <li class="first last">
                            <a href="/order/">Pedidos</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <span>Blog</span>
                    <ul class="menu_level_1">
                        <li class="first">
                            <a href="/article/">Artículos</a>
                        </li>
                        <li class="last">
                            <a href="/category/">Categorías</a>
                        </li>
                    </ul>
                </li>
                <li class="last">
                    <span>Newsletter</span>
                    <ul class="menu_level_1">
                        <li class="first last">
                            <a href="/newsletter/">Emails</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
        <div id="section"></div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function() {

                var style = {
                    opened: 'opened',
                    wide: 'wide',
                    currentAncestor: 'current_ancestor'
                };

                var menu = $('#menu');
                var items = $('#menu>ul>li');
                var body = $('body');

                items.filter('.' + style.currentAncestor)
                .removeClass(style.currentAncestor)
                .first()
                .addClass(style.opened);

                items.children('span').click(function(event) {

                    event.preventDefault();

                    var group = $(this).parent();

                    if(!group.hasClass(style.opened)) {

                        items.filter('.' + style.opened).removeClass(style.opened);
                        group.addClass(style.opened);

                    }


                });

                menu.children('a').click(function(event) {

                    event.preventDefault();

                    body.toggleClass(style.wide);

                });

            });
        </script>
    </body>
</html>

小鸟背景和高度为2000px的#section只是为了通过移动内容进行测试。

谢谢大家!


如果一个元素及其所有子元素都是透明的(没有background-color, no background-image).

为了完成你的要求,我会这样做:

  1. 避免在该组元素的容器上设置背景样式。
  2. 通过单个图像对这些单独的导航元素执行所有背景样式,即使您必须对其进行剪辑以使其灵活。
  3. 对于活动导航元素,将背景图像交换为具有所需透明缩进的图像。

请参阅这个 JSFiddle,它是从您的代码中分叉出来的:http://jsfiddle.net/2XSd5/ http://jsfiddle.net/2XSd5/。这演示了我描述的方法:使所有背景透明,并使用背景图像进行剪切。这是我修改的代码:

#menu:after { background: none; }

#menu > ul > li > ul > li.current:after { content: none; }

#menu ul, #menu li { background-color: transparent; }

#menu > ul { background-color: transparent; }

#menu > ul > li > ul > li > a, #menu > ul > li > ul > li > a {
    background-color: white;
    }

#menu > ul > li > ul > li.current > a, #menu > ul > li > ul > li.current > a:hover {
    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAyCAYAAADm1uYqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAV5JREFUeNrs21FKw0AUQNEZcQluR91EVXSFQnUN1f3oEjROSwQrcYyl4HvhHHjQhHzl4yZtZ+rQFIAETtwCQLAABAsQLADBAhAsQLAABAtAsADBAhAsAMECFh+sYRyAFMEqogVEd9qmjp+r2wEE9DIVLICIsbr6GiyAyLF6+jzhX0IgRawEC0gTK8ECIsbqeipWggVE8tqLlWABkWJ10+a5d5FgARFidTvGqrvzRrCA/3bXZtPm/bcLrcNavu3Tqv5wfMh2LAuNOba3MnOLoDes3CGaM6VzLExEcN/mfM4DVLDyxukvb0K17O8ZnTOlcx6O6azNeoyWYC1APWDKRGQEh8jRemxzIVjAIqIlWECaaAkWEDVal4IFZInWw/do1aFxb4CgtpuhV4IFZIrWjpXuQIavhzt+wwLSECxAsAAECxAsAMECECxAsAAEC0CwAMECECwAwQIECyCEDwEGAGnvSNs6OT13AAAAAElFTkSuQmCC) right center no-repeat;
    color: grey;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剪切背景以露出下面的图层 的相关文章

  • HTML/CSS - 打印样式、背景颜色和图像不会在 IE 和 Firefox 中显示?

    我如何在打印时显示背景颜色和图像 我知道这是浏览器属性 但我想从 CSS 完成它 例如我用于 webkit 的 CSS webkit print color adjust exact 那么我怎样才能实现它呢 不 这是不可能的 请参阅 web
  • 我可以使用 CSS 或脚本设置禁用控件的样式吗?

    我有一个 HTMLdiv页面上的元素在以下情况下更新select页面上的元素发生变化 有时 input需要根据选择禁用标签 文本框 问题是 项目涉众喜欢该功能 他们只是认为在 禁用 状态下 文本框内容太浅 因此不可读 我可以将 CSS 应用
  • TransitionEnd 事件未触发?

    我有多个元素 每个元素都以 某种程度上 持续时间进行动画处理 我使用 CSS3 过渡 jQuery 库和transitionend辅助函数来自大卫 沃尔什 https davidwalsh name css animation callba
  • 禁用输入字段上的文本选择

    我正在使用 IBM Worklight HTML5 CSS3 和 javascript 开发混合应用程序 有没有可能的方法来禁用输入字段上的文本选择 我的屏幕上有一个用户名和密码字段 并且希望禁止用户在输入字段中选择文本 另外 应禁用复制粘
  • 的 CSS margin-top 影响父级的边距

    我已经研究这个问题有一段时间了 但还没有找到直接的答案 当向元素添加页边距顶部时 就我而言 它主要发生在标题上 在许多情况下 边距顶部是与父级共享的 HTML div h1 My title h1 div CSS div padding 2

  • 当CSS文件存在时,无法在服务器上找到它们[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当运行本地服务器时 这一切都运行良好 我有 header html 其中包含以下代码 在 public html 目录 与 header h
  • 使用 Jsoup 选择没有类的 HTML 元素

    考虑一个像这样的 html 文档 div p p p p p class random class name p div 我们怎样才能选择所有p元素 但不包括p元素与random class name class Elements ps b
  • Chrome 扩展:插入固定 div 作为 UI

    我想使用 chrome 扩展将 div 插入固定位置 它将覆盖您当前正在查看的页面 我担心的是 我希望它可以在任何页面上工作而不改变它 除了插入我的固定 div 之外 但我不知道我这样做的方式是否可行 目前 该按钮不会显示 并且我在让 di
  • 如何将两个图像放置在一个div的对角

    如你所见 我不是 CSS 专家 我需要一些帮助来了解如何使用两个图像制作这个 div 如下图所示 托马斯是对的 但还有更好的解决方案 div img class align left src alt description of your
  • 简化 CSS 代码

    我怎样才能简化这段代码 user panel subscribe user panel faves user panel tags user panel title user panel calendar a user panel item
  • 如何实现右边缘倾斜的 div? [复制]

    这个问题在这里已经有答案了 我几天来一直在寻找使 div 的右边缘倾斜 45 度的代码 这是我特别想要得到的图像示例 似乎有很多 倾斜边缘 div 的示例 但我找不到任何具有特定右侧倾斜的示例 我花了很多时间试图改变其他人的代码 但结果却一
  • 是否可以在没有 Javascript(仅 CSS)的情况下执行相同的操作(悬停效果)?

    我正在尝试创建一个带有图标的按钮像这样 http jsfiddle net pRdMc HTML div div class icon div span Send Email span div CSS button width 270px
  • CSS 中 calc() 的结果是什么

    我们现在已经开始使用calc 在CSS中 用于设置计算结果的宽度 例如 div div div div parent width 100px calcWidth width calc 100 3px height 100px backgro
  • 夜间值班。单击带有文本的元素

    我遇到问题 无法单击具有某些独特文本的网页元素 我有这样的结构 div class wg wagon type title Text div 我试试这个 click wg wagon type title contains Text 但我有
  • 在 IE10 中禁用捏合放大

    在 IE10 触摸模式下 我希望仅使页面的特定部分可缩放 其余的不应该 我找到了这个 http msdn microsoft com en US library ie hh772044 aspx http msdn microsoft co
  • CSS 选择器用于选择最后两个子项,而不知道列表中有多少项

    我有一个无序列表 它有时包含 4 5 6 或 7 个项目 我想知道是否有一个 CSS 选择器来选择最后两项 我意识到 last child会给我最后一件物品 是否有 倒数第二个孩子 选择器 或者 孩子数量 2 选择器 HTML ul li
  • 如何在 div 容器内的元素之间留出空间

    我有一个弹性容器 它将由元素动态填充 容器没有固定宽度 I use max width max content 并且可以包含我想要的任意数量的元素 问题是我需要这些元素之间的间距 但不需要元素和容器之间左侧和右侧的间距 当然我可以用 ele
  • 如何检查元素的内容是否为空,如果是,则在 jquery 中删除该元素

    我目前正在尝试选择某个 div 内没有内容的任何 h2 元素并将其删除 这是我的 html 代码 div class skipToContainer h2 class vidSkipTo Hello h2 h2 class vidSkipT
  • 响应式导航栏隐藏其下方的元素

    我创建了一个响应式导航栏 但它使下面的元素 Flexslider 插件 消失 在我制作导航栏之前 下面的 Flexslider 可以正常显示 但现在不行 导航栏的 z index 为 2 所以我不知道问题是什么 我应该如何 更改什么才能允许
  • 两种颜色边框

    客户想要两种颜色的边框以获得浮雕外观 我可以在一个元素上执行此操作吗 我希望避免堆叠两个具有单独边框的 DOM 元素 是的 使用outline财产 它充当您边界之外的第二个边界 但请注意 它可能会以一种奇怪的方式与边距 填充和阴影进行交互

随机推荐

  • 将 iTextSharp.text.Image 转换回 System.Drawing.Image

    我正在尝试将 iTextSharp text Image 类型的对象转换回 System Drawing Image 这是一段不起作用的代码 System Drawing Image img System Drawing Image Fro
  • STL 容器迭代器的模板专门化?

    我正在尝试编写一个类似于的模板函数std to string适用于基本类型以及 STL 容器的迭代器 但我不确定如何编写足够具体的模板来仅识别迭代器 到目前为止我尝试的是尝试使用iteratorSTL 容器中的 typedef templa
  • 未知权限 com.android.vending.BILLING

    我正在尝试在我的应用程序中设置应用内计费功能 到目前为止 我遵循了本指南 http developer android com training in app billing preparing iab app html http deve
  • 通过 Whatsapp 从我的 Android 上的应用程序共享 pdf 文件

    我尝试将 pdf 文件从我的应用程序发送到 Whatsapp 这是代码 但缺少一些东西 它打开了 Whatsapp 我可以选择一个联系人 但它说 共享失败 代码 String PLACEHOLDER file android asset Q
  • 从 gcc 的中间文件编译目标文件

    通过使用 fdump 树 flag 可以在源代码文件编译期间转储一些中间格式文件 我的问题是是否可以使用该中间文件作为 gcc 的输入来获取最终的目标文件 我问这个是因为我想向中间文件添加一些代码gimple 通过使用标志获得 fdump
  • 在 AWK 中将空白字段替换为零

    我希望使用 awk 将空白字段替换为零 但是当我使用 sed s 0 文件时 当我只想考虑丢失的数据时 我似乎会替换所有空格 由于某些空字段 使用 awk print NF 文件返回不同的字段号 即 9 4 input 590073920
  • Eclipse PDT + xdebug:单步执行损坏的代码

    我使用 PHP 5 6 2 和 xdebug 2 2 5 以及 Eclipse 4 4 1 和 PDT 3 3 1 我正在尝试在本地服务器 localhost 上设置调试器 xdebug 但有些东西似乎被破坏了 当我启动调试会话时 Ecli
  • t sql“select case”与“if ... else”以及有关“开始”的解释

    我对 t sql 的经验很少 我必须编写一个存储的 这是我存储的 USE myDatabase GO SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO CREATE PROCEDURE dbo
  • java中String类如何用构造函数初始化

    public String String original this value original value this hash original hash 我不明白原始数据是如何转换为字符数组的 如果我用不同的代码尝试它 它会抛出编译错
  • 在 C# 中实现 OPOS 设备

    对于与旧版 POS 应用程序的某些互操作 我想知道是否可以在 C 中实现虚假的 OPOS 设备 基本上我会实现一个假键盘 它接受网络请求并将按键传递给遗留应用程序 有谁知道这是否可能或在哪里可以获得文档 我认为 OPOS 只是调用由注册表项
  • 将多列粘贴在一起

    我在数据框中有一堆列 我想将它们粘贴在一起 用 分隔 如下所示 data lt data frame a 1 3 b c a b c c c d e f d c g h i i e a b c d 1 a d g 2 b e h 3 c f
  • 如何对 Django 数据库迁移进行单元测试?

    我们使用 django 迁移 django v1 7 更改了数据库 数据库中存在的数据不再有效 基本上我想通过在单元测试中构建预迁移数据库 添加一些数据 应用迁移来测试迁移 然后确认一切顺利 一个人如何 加载单元测试时阻止新的迁移 I fo
  • 没有 AVAsset 的纯色 AVMutableComposition

    这是我的最终目标 我想使用AVVideoCompositionCoreAnimationTool从 Core Animation 创建视频 我不会在此组合中使用现有的 AVAsset 我的问题是 我该如何使用AVMutableComposi
  • 猫鼬预保存和验证之间的区别?什么时候使用哪一个?

    目前我正在使用pre save 进行验证 UserSchema pre save true function next done var self this in case inside a callback var msg helper
  • Angular 4 材质是否像 bootstrap 一样响应式?

    我正在使用 Angular 4 开始一个新项目 需要创建响应灵敏且令人愉悦的用户界面 bootstrap 为您提供响应能力 但没有物质感 棱角分明的材质提供了良好的 UI 体验https material angular io https
  • 防止箭头键更改选定的单选按钮

    我有几个单选按钮 我想阻止按下向上 向下箭头键来更改选定的单选按钮 如果您选择其中一个单选按钮 然后按向上 向下箭头键 它将选择上一个或下一个单选按钮 相反 我希望选择保持不变 为此我可以使用event preventDefault 在某些
  • Jgrid 生成 XML 时出现问题

    我正在使用 Jgrid 我像我们大多数人一样使用 Xml 将数据注入到网格中 我想要批量更新数据库 我的要求是 当我单击 保存更改 时 它会生成当前 更新的 网格数据的 Xml 那么 我如何生成Jgrid数据的Xml 请帮忙 这是代码
  • C++ 模板:返回 list::iterator

    我怎样才能使下面的代码工作 在编译过程中 我收到一条错误消息 告诉我searchForResource函数没有返回类型 template
  • 为什么我的 UILabel 不显示 NSInteger

    我有一个 ViewController 和 GameController 类 它是 NSObject 的子类 视图控制器有一个链接到它的按钮 并触发一个初始化 GameController 类的 IBAction 在 GameControl
  • 剪切背景以露出下面的图层

    有没有办法剪切 div 背景以暴露下面的图层 就像这样 to this 欢迎任何前沿的 CSS 规则 UPDATE 好的 我做了一个示例代码 http jsfiddle net coma 9ae7g 1 http jsfiddle net