rails javascript jquery:通过页面部分时导航栏标题中的粗体效果

Posted

技术标签:

【中文标题】rails javascript jquery:通过页面部分时导航栏标题中的粗体效果【英文标题】:rails javascript jquery: bold effect in navbar title when passing over a page section 【发布时间】:2021-04-04 00:28:43 【问题描述】:

我有一个由 6 个不同部分组成的网页,以及一个带有每个部分标题的固定导航栏。滚动页面时,用户会看到一个部分,然后是下一个部分,依此类推。

我想这样当用户浏览一个部分时,导航栏中的相关标题会变为粗体,就像在这个网站中它改变颜色一样:http://www.psychologue-paris16.com/

有人知道怎么做吗?

这是我的导航栏:

<nav class="navbar navbar-expand-lg navbar-light text-black fixed-top">
  <a class="navbar-brand" href=""><strong>Hélène Levy-Borrel</strong></a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor03" aria-controls="navbarColor03" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarColor03">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item">
        <a class="nav-link scrollLink" href="#therapy">Title 1</a>
      </li>
      <li class="nav-item">
        <a class="nav-link scrollLink" href="#consult">Title 2</a>
      </li>
      <li class="nav-item">
        <a class="nav-link scrollLink" href="#modalities">Title 3</a>
      </li>
      <li class="nav-item">
        <a class="nav-link scrollLink" href="#method">Title 4</a>
      </li>
      <li class="nav-item">
        <a class="nav-link scrollLink" href="#background">Title 5</a>
      </li>
      <li class="nav-item">
        <a class="nav-link scrollLink" href="#contact">Title 6</a>
      </li>
    </ul>
  </div>
</nav>

还有我的主页:

<%= render 'jumbotron' %>

<div class="content">
  <%= render 'Section 1' %>
  <%= render 'Section 2' %>
  <%= render 'Section 3' %>
  <%= render 'Section 4' %>
  <%= render 'Section 5' %>
  <%= render 'Section 6' %>
</div>

【问题讨论】:

你在***上找过类似的问题吗? ***.com/questions/16625972/… ...我假设您正在使用引导程序,但这应该可以工作 我有,但不是我要找的。悬停在链接上时我不想更改颜色,我想在悬停与链接相关的部分时更改颜色并使链接变为粗体。我希望我说的是有道理的:-) 我可以想办法在 javascript 中做到这一点,但在纯 CSS 中不行,您需要纯 CSS 版本吗? 完全没有,如果您有任何想法,JavaScript 也可以工作 【参考方案1】:

这确实使用 jquery,但它几乎在所有情况下都能快速且良好地运行。

我的 sorttable.js :

var asc = 0;
function sort_table(table, col) 
    $('.sortorder').remove();
    if (asc == 2)  asc = -1;  else  asc = 2; 
    var rows = table.tBodies[0].rows;
    var rlen = rows.length;
    if (!table.tHead)  rlen--; 
    var arr = new Array();
    var i, j, cells, clen;
    // fill the array with values from the table
    // does not like empty rows, so check your haml!
    for (i = 0; i < rlen; i++) 
        cells = rows[i].cells;
        clen = cells.length;
        arr[i] = new Array();
        for (j = 0; j < clen; j++)  arr[i][j] = cells[j].innerhtml; 
    
    // sort the array by the specified column number (col) and order (asc)
    arr.sort(function (a, b) 
        var retval = 0;
        var col1 = a[col].toLowerCase().replace(',', '').replace('$', '').replace(' usd', '')
        var col2 = b[col].toLowerCase().replace(',', '').replace('$', '').replace(' usd', '')
        var fA = parseFloat(col1);
        var fB = parseFloat(col2);
        if (col1 != col2) 
            if ((fA == col1) && (fB == col2))  retval = (fA > fB) ? asc : -1 * asc;  //numerical
            else  retval = (col1 > col2) ? asc : -1 * asc; 
        
        return retval;
    );
    for (var rowidx = 0; rowidx < rlen; rowidx++) 
        for (var colidx = 0; colidx < arr[rowidx].length; colidx++)  table.tBodies[0].rows[rowidx].cells[colidx].innerHTML = arr[rowidx][colidx]; 
    

    hdr = table.rows[0].cells[col];
    if (hdr.children.length == 0) 
        obj = hdr
     else 
        obj = hdr.children[0]
    
    if (asc == -1) 
        // $(hdr).html($(hdr).html() + '<span class="sortorder">▲</span>');
        $(obj).html($(obj).html() + '<span class="sortorder">▲</span>');
     else 
        //$(hdr).html($(hdr).html() + '<span class="sortorder">▼</span>');
        $(obj).html($(obj).html() + '<span class="sortorder">▼</span>');
    

在 html 视图中:

= javascript_include_tag "sorttable"
:javascript
  function sortTable(n) 
    sort_table(document.getElementById("indextable"), n);
  
%table.table.table-striped.table-bordered.table-hover.table-sm#indextable
  %thead
    %tr
      %th Select
      %thonclick: "sortTable(1)" Sample
      %thonclick: "sortTable(2)" Method
      %thonclick: "sortTable(3)" Compound
      %th Chart
  %tbody
    <your contents here>

【讨论】:

以上是关于rails javascript jquery:通过页面部分时导航栏标题中的粗体效果的主要内容,如果未能解决你的问题,请参考以下文章

Rails如何检测是不是使用javascript / jQuery插入了部分

Ruby on Rails - Javascript/jQuery 到 Haml

Rails 服务器告诉我 --- 找不到类型为 'application/javascript' 的文件 'jquery-ui/datepicker'

rails3中的jquery tokeninput javascript

[Ruby on Rails] 找不到类型为“application/javascript”的文件“jquery-ui/autocomplete”

Rails 应用程序中的 Javascript 或 jquery