【问题标题】:Google's Imageless Buttons谷歌的无图像按钮
【发布时间】:2010-10-05 23:01:12
【问题描述】:

最近有几篇关于 Google 新的无图像按钮的文章:

我非常喜欢这些新按钮在 Gmail 中的工作方式。如何在我的网站上使用这些或类似的按钮?是否有任何具有类似外观和感觉的开源项目?

如果我想使用 JQuery/XHTML/CSS 像这样滚动我自己的按钮包,我可以使用哪些元素?我最初的想法是:

  1. 标准 <input type="button"> 与 css 以改善外观(设计文章主要讨论 css/imges 所涉及的内容。)

  2. Jquery javascript 会弹出一个自定义对话框,该对话框植根于“onclick”事件上的按钮,其中包含<a> 标签和用于过滤的搜索栏?该弹出窗口的表格布局是否合理?

我不擅长对网络上的东西进行逆向工程,我可以使用哪些工具来帮助对这些按钮进行逆向工程?使用 Firefox 的 Web 开发人员工具栏,我看不到按钮弹出对话框中使用的 css 或 javascript(即使它已被缩小)。我可以使用什么浏览器工具或其他方法来查看它们并获得一些想法?

我不想窃取任何 Google 的 IP,只是想了解如何创建类似的按钮功能。

【问题讨论】:

    标签: javascript html css gmail reverse-engineering


    【解决方案1】:

    您可以尝试使用 Firefox 的 Firebug 插件来查看按钮上的 CSS。

    【讨论】:

      【解决方案2】:

      Web Developer Toolbar 在 css 菜单下有一个视图样式信息,它将告诉您将什么 css 应用于项目。该菜单中还有“编辑 CSS”功能,可让您动态更改 CSS 以查看它对页面的影响。

      【讨论】:

      • 我发现 firebug 对这类事情非常有用 - 查看应用了哪些 CSS 并进行了实时更改。
      • 我也使用 firebug,但因为它有自己的引擎,所以可能有点重。在我看来,工具栏的重量要轻得多,也更容易使用。
      【解决方案3】:

      无论您决定如何做,请确保您首先使用默认值呈现页面:

      <input type="submit" value="submit" />
      

      ... 然后使用 jQuery 将输入元素与具有 onClick 事件的自定义按钮交换。这将确保没有启用 JavaScript 的人仍然能够使用您的网站。

      可用性应该是第一位的!

      【讨论】:

      • 为什么?请改用&lt;button type="submit"&gt;,因为它可以有子元素,并且可以随意设置样式。
      【解决方案4】:

      据 Firebug 说,这是他们的“存档”按钮。

      <div tabindex="0" act="7" class="goog-imageless-button goog-inline-block goog-imageless-button goog-imageless-button-collapse-right goog-imageless-button-primary" id="">
        <div class="goog-inline-block goog-imageless-button-outer-box">
          <div class="goog-inline-block goog-imageless-button-inner-box">
            <div class="goog-imageless-button-pos">
              <div class="goog-imageless-button-top-shadow"> </div>
              <div class="goog-imageless-button-content"><b>Archive</b></div>
            </div>
          </div>
        </div>
      </div>
      

      CSS 不仅仅是我关心的组织/粘贴。也许只有我一个人,但是当标记/css变得如此沉重时,我想我更愿意使用图像(或几张图像作为背景。更好的是,Sprites)。此外,此按钮的图像将小于单个 K。

      尽管我很喜欢 Google,但这似乎有点过头了。


      更新: 谷歌是一个独特的案例。如果您是一个大型网站,并且希望将您的内容国际化,那么这种无图像技术实际上非常酷。它允许您将几乎任何书面语言应用到您的 UI,而无需生成新图像,也无需担心破坏您的按钮。

      查看问题:What are the advantages of using an imageless button?

      【讨论】:

        【解决方案5】:

        您将遇到的最大问题是让它跨浏览器工作。

        我认为你应该认真考虑你是否真的需要它......谷歌通过制作这样的东西获得了很多收益,因为他们需要大量的按钮和语言;我怀疑大多数网站和应用程序都可以使用图片。

        不过,开源组件是个好主意:广泛传播财富和努力。

        【讨论】:

          【解决方案6】:

          -- 编辑 -- 我没有在原帖中看到链接。对不起!将尝试重写以反映实际问题

          StopDesign 在here 上有一篇很棒的帖子。 [edit 20091107] 这些是作为closure library 的一部分发布的:请参阅button demo

          基本上,shows 的自定义按钮是使用简单的 CSS 创建的。

          他原来是用9个表来得到效果的:

          但后来他在上下边框上使用了一个简单的1px左右边距来达到同样的效果。

          使用三层伪造渐变:

          所有代码都可以在Custom Buttons 3.1 页面上找到。 (虽然没有图片的渐变只在 Firefox 和 Safari 中有效)

          分步说明

          1 - 插入以下 CSS:

          /* Start custom button CSS here
          ---------------------------------------- */
          .btn {
            display:inline-block;
            background:none;
            margin:0;
            padding:3px 0;
            border-width:0;
            overflow:visible;
            font:100%/1.2 Arial,Sans-serif;
            text-decoration:none;
            color:#333;
            }
          * html button.btn {
            padding-bottom:1px;
            }
          /* Immediately below is a temporary hack to serve the 
             following margin values only to Gecko browsers
             Gecko browsers add an extra 3px of left/right 
             padding to button elements which can't be overriden.
             Thus, we use -3px of left/right margin to overcome this. */
          html:not([lang*=""]) button.btn {
            margin:0 -3px;
            }
          .btn span {
            background:#f9f9f9;
            z-index:1;
            margin:0;
            padding:3px 0;
            border-left:1px solid #ccc;
            border-right:1px solid #bbb;
            }
          * html .btn span {
            padding-top:0;
            }
          .btn span span {
            background:none;
            position:relative;
            padding:3px .4em;
            border-width:0;
            border-top:1px solid #ccc;
            border-bottom:1px solid #bbb;
            }
          .btn b {
            background:#e3e3e3;
            position:absolute;
            z-index:2;
            bottom:0;
            left:0;
            width:100%;
            overflow:hidden;
            height:40%;
            border-top:3px solid #eee;
            }
          * html .btn b {
            top:1px;
            }
          .btn u {
            text-decoration:none;
            position:relative;
            z-index:3;
            }
          
          /* pill classes only needed if using pill style buttons ( LEFT | CENTER | RIGHT ) */
          button.pill-l span {
            border-right-width:0;
            }
          button.pill-l span span {
            border-right:1px solid #ccc;
            }
          button.pill-c span {
            border-right-style:none;
            border-left-color:#fff;
            }
          button.pill-c span span {
            border-right:1px solid #ccc;
            }
          button.pill-r span {
            border-left-color:#fff;
            }
          
          /* only needed if implementing separate hover state for buttons */
          .btn:hover span, .btn:hover span span {
            cursor:pointer;
            border-color:#9cf !important;
            color:#000;
            }
          
          /* use if one button should be the 'primary' button */
          .primary {
            font-weight:bold;
            color:#000;
            }
          

          2 - 使用以下方式之一调用它(更多可以在上面的链接中找到)

          <a href="#" class="btn"><span><span><b>&nbsp;</b><u>button</u></span></span></a>
          

          <button type="button" class="btn"><span><span><b>&nbsp;</b><u>button</u></span></span></button>
          

          【讨论】:

            【解决方案7】:

            这里的大部分工作可能不会是设计 - 这些帖子已经是关于渐变效果的优秀指南。

            问题是让它在所有浏览器中都能正常工作,或者更具体地说是 IE6 和 IE7 的古怪垃圾堆。

            我认为您使用 jQuery 重写的标准按钮走在正确的轨道上 - 这样您仍然可以被屏幕阅读器访问,并且可以在非常旧的浏览器中很好地降级。

            对于 HTML,我认为最好的办法是使用每个浏览器访问 Gmail,然后查看生成的 HTML - 我希望 IE6、IE7 完全不同(也取决于它们是否需要 quirks-mode)和其他一切。

            【讨论】:

            • 我真诚地怀疑 Google 是否会在浏览器中嗅探 IE 以进行按钮渲染。
            【解决方案8】:

            您可以使用我开发的这个 jquery 插件。这些按钮几乎可以在任何地方使用,而且因为它是一个插件,所以它们很容易设置和配置。

            http://swizec.com/code/styledButton/

            【讨论】:

              【解决方案9】:

              这些是作为closure library 的一部分发布的:请参阅button demo

              【讨论】:

                【解决方案10】:

                带有闭包库链接的帖子不适用。作为闭包库的一部分发布的内容使用带有渐变的按钮。

                列出的其他解决方案是无用的。你不能从那里开始让这些按钮在 Gmail 让它们工作的每个浏览器上工作。鲍曼在他的网站上显示的不是工作代码。

                【讨论】:

                  【解决方案11】:

                  为 2011 年更新这篇文章:

                  Google 于 2011 年 7 月在其服务中推出了新设计。新的 Google 按钮已在此处重新创建:http://pixify.com/blog/use-google-plus-to-improve-your-ui/

                  新按钮如下所示:

                  【讨论】:

                  • +1。与其尝试使用图像或其他元素(如发布当前答案)来伪造渐变,不如在可能的情况下使用渐变,并在旧浏览器上使用合理的颜色。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-05-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多