【问题标题】:Google Custom Search (CSEv2) help on styling?Google 自定义搜索 (CSEv2) 对样式的帮助?
【发布时间】:2013-11-20 17:51:27
【问题描述】:

我在设置Google Custom Search 框的样式(不是结果)方面需要帮助

旧样式使用form 标签,您可以在其中轻松设置搜索框的外观和风格。

<form action="/search" id="searchbox_abc:123" class="search">
    <input type="hidden" name="cx" value="abc:12">
    <input type="hidden" name="cof" value="FORID:XX">
    <input type="text" name="q" size="16" class="smalltext">                    
    <input type="submit" name="sa" value="SEARCH" class="smalltext">
</form>

使用新的 CSEv2 代码,它包含在脚本标签中:

<script>
  (function() {
    var cx = 'abc:123';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>

并且您必须将以下标签放在您希望显示搜索框的位置。

<gcse:search></gcse:search>

我需要有关如何将新的 CSE 设置为看起来像以前的样式的帮助。 (字体大小、按钮和输入字段大小..等,样式与之前完全相同..应用类/设置字体..等)

谢谢!

【问题讨论】:

    标签: css search styling


    【解决方案1】:

    您不需要做所有这些,只需将其添加到谷歌搜索的末尾&lt;script&gt;标签就像这样:

    <script>
        (function() {
            var cx = '017524632059031635296:oiqsdcln6tk';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//www.google.com/cse/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
        })();
    </script>
    <gcse:searchresults-only></gcse:searchresults-only>
    

    确保在结束脚本标记的底部添加&lt;gcse:searchresults-only &gt;&lt;/gcse:searchresults-only&gt; 并添加您自己的表单例如:

    <form action="" method="GET">
      <input class="input" name="q" placeholder="Search...">
    </form>
    

    然后样式它就像您为任何常规 HTML 标记设置样式一样,您就可以开始了!它的工作方式与过去完全一样。 PS。如果您不想将用户带到其他地方查看示例 search.html,只需添加此 &lt;form action="search.html" method="GET"&gt; 插入此 &lt;form action="" method="GET"&gt;

    希望对您有所帮助! -Arqetech

    【讨论】:

    • 嘿Arqetech。毫无疑问,您的解决方案会奏效。但它会创建一个“url 参数”并将其添加到地址栏 URL。意味着刷新页面将加载最后保存的搜索参数并自动加载自定义搜索。你有解决方案吗?
    • @Nikhil Nanjappa 抱歉我的回复晚了,但我不太明白!请简单解释一下
    • 例如,如果您的网址是 localhost:8080,而您搜索的是 play,则会显示搜索并且网址现在更改为 localhost:8080/?q=play/。现在刷新时,网址不会改变,但最终会再次搜索单词play
    • 那么你会想要一个$_POST 请求而不是$_GET 默认情况下它使用$_GET
    • 你需要把&lt;form action="" method="GET"&gt;改成&lt;form action="" method="POST"&gt;
    【解决方案2】:
    1. 使用内置于 Google Chrome 或 Firefox 浏览器中的 DOM 检查工具。 (右键单击一个元素并选择“检查”。)这将允许您确定元素 ID/类及其当前样式。

    2. 编写覆盖这些样式的 CSS 规则,如下所示:

      input.gsc-input {}
      input.gsc-search-button {}
      form.gsc-search-box {}
      div.gsc-control-cse {}
      

    【讨论】:

      【解决方案3】:

      CSE page

      1. 选择您要设置样式的搜索引擎。
      2. 点击Look and feel
      3. 点击Customize标签

      这有用于主题化您希望设置样式的任何 CSE 组件的选项。

      更新

      如果您需要比控制面板中提供的选项更多的选项,则必须使用the API,使用它的示例在页面底部。

      您会特别对Custom Search Element Control API 感兴趣,您可以在其中指定哪个 HTML 标记、元素的 id,然后您可以使用它。

      Sample Demo

      <div id="test"></div>
      <style type="text/css">
          #test input {
            font-size: 32px;
            color: red;
          }
      </style>
      
      <script>
      var myCallback = function() {
        if (document.readyState == 'complete') {
          google.search.cse.element.render({
                div: "test",
                tag: 'search'
         });
        } else {
          google.setOnLoadCallback(function() {
              google.search.cse.element.render({
                    div: "test",
                    tag: 'search'
                  });
          }, true);
        }
      };
      
      window.__gcse = {parsetags: 'explicit', callback: myCallback};
      (function() {
        var cx = '008717607452966325908:cegvvfhkhvk'; // Insert your own Custom Search engine ID here
        var gcse = document.createElement('script'); gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = (document.location.protocol == 'https' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s);
      })();
      </script>
      

      【讨论】:

      • 谢谢,..byut 几乎没有给您太多的控制权..只有少数边框或背景颜色...如何获得与以前使用 FORM 标签时相同的“样式”?例如字体大小,按钮/输入字段的大小......等等你是说它在那里,我错过了吗?还是您没有完整阅读帖子?我需要能够像以前一样设置样式/添加类以匹配大小和当前站点主题。谢谢!
      • @whispers :啊,错过了问题,我已经更新了答案:)
      • 谢谢。但最后我无法让它工作。如果可能的话,最好举个例子? :) 我无法将输入字段设置为特定大小(总是太高,而不是像高度 15 像素或字体大小 9 像素这样的小东西我无法获得一个小按钮(但确实获得了一个新图像作为按钮 BG,但是放大镜图标/覆盖仍然存在)并且在输入字段中仍然有谷歌品牌/图像。感谢针对该方面定位/覆盖 css 的具体示例。(请记住,现在这仅针对输入字段和按钮,还没有结果)谢谢
      • 对于其他想要/愿意提供帮助的人.. 如何让 CSE v2 看起来像这样的示例:link 感谢任何可以发布一些简单的 CSS 来覆盖 Google 的 CSS 并制作组件看起来像上图(使用 CSS 和旧的 FORM 标签完成)谢谢!!!!
      【解决方案4】:

      清除水印:

      .gsc-clear-button{
       display:none !important;
      }
      .cse input.gsc-input,input.gsc-input{
      background-image:none !important;
      height:30px !important;
      }
      

      【讨论】:

        【解决方案5】:

        我得到这个工作的方式.. 1.在google脚本中设置async为false(gcse.async = false); 2.在下面添加css。这可能取决于加载 css 的顺序!

        .gsc-control-cse{ 填充:0!重要; }

        【讨论】:

          【解决方案6】:

          您需要将搜索框的文件和结果分开。

          对于主文件:

          <form action="/search.html" method="get"><!--Change /search.html to your 
          results file-->
              <input type="text" name="search" placeholder="Search..">
              <input type="submit" name="q" value="Submit">
          </form>
          <style>
              input[type=text] {
                  width: 150px;
                  box-sizing: border-box;
                  border: 2px solid #ccc;
                  border-radius: 4px;
                  font-size: 16px;
                  background-color: white;
                  background-position: 10px 10px; 
                  background-repeat: no-repeat;
                  padding: 10px;
                  -webkit-transition: width 0.4s ease-in-out;
                  transition: width 0.4s ease-in-out;
              }
          
              input[type=text]:focus {
                  width: 300px;
              }
          
              input[type=submit] {
                  width: 100px;
                  box-sizing: border-box;
                  border: 2px solid #ccc;
                  border-radius: 4px;
                  font-size: 16px;
                  background-color: white;
                  background-position: 10px 10px; 
                  background-repeat: no-repeat;
                  padding: 10px;
                  -webkit-transition: width 0.4s ease-in-out;
                  transition: width 0.4s ease-in-out;
              }
          </style>
          

          对于结果文件(默认:search.html):

          <script>
              (function() {
                  var cx = 'abc:123';
                  var gcse = document.createElement('script');
                  gcse.type = 'text/javascript';
                  gcse.async = true;
                  gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//www.google.com/cse/cse.js?cx=' + cx;
                  var s = document.getElementsByTagName('script')[0];
                  s.parentNode.insertBefore(gcse, s);
              })();
          </script>
          <gcse:searchresults-only></gcse:searchresults-only>
          

          如果它不起作用,可能是因为您的网站不在 Google 搜索引擎上,或者可能是代码错误?如果不行请回复。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-17
            • 1970-01-01
            • 1970-01-01
            • 2010-10-15
            • 2019-07-17
            • 1970-01-01
            • 1970-01-01
            • 2013-04-03
            相关资源
            最近更新 更多