كيف يمكنني تسليط الضوء على وصلة تقوم على الصفحة الحالية؟

StackOverflow https://stackoverflow.com/questions/180887

  •  05-07-2019
  •  | 
  •  

سؤال

وآسف إذا كان هذا يبدو وكأنه سؤال غبي حقا، ولكني في حاجة لجعل تغيير لون الارتباط عندما كنت على الصفحة ارتباطه.

وعلى سبيل المثال، عندما كنت على "أسئلة" صفحة من ستاكوفيرفلوو، الرابط في أعلى يتغير لون. كيف يمكنك أن تفعل هذا؟

هل كانت مفيدة؟

المحلول

وانه شيء من جانب الخادم - عند تقديم الصفحة، إضافة فئة مثل "الحالية الصفحات" إلى الارتباط. ثم يمكنك أسلوب بشكل منفصل من الروابط الأخرى.

وعلى سبيل المثال، ستاكوفيرفلوو يجعل الروابط مع class="youarehere" عندما يشير إلى الصفحة التي كنت بالفعل.

نصائح أخرى

وانها حقا يتوقف على كيفية صفحتك هي التي شيدت. عادة، وأود أن تفعل هذا CSS استخدام، وتعيين إعطاء رابط معرف يسمى "نشطة" ...

<a id="active" href="thisPage.html">this page</a>

... وفي CSS ...

a#active { color: yellow; }

ومن الواضح أن هذا هو مثال مبسط إلى حد ما، لكنه يوضح الفكرة العامة.

ويمكنك القيام بذلك دون الحاجة فعلا لتعديل الروابط نفسها لكل صفحة.

في استنساخ تجاوز المكدس أنا بناء مع جانغو، أنا أفعل هذا:

<!-- base.html -->
...
<body class="{% block bodyclass %}{% endblock %}">
...
<div id="nav">
  <ul>
    <li id="nav-questions"><a href="{% url questions %}">Questions</a></li>
    <li id="nav-tags"><a href="{% url tags %}">Tags</a></li>
    <li id="nav-users"><a href="{% url users %}">Users</a></li>
    <li id="nav-badges"><a href="{% url badges %}">Badges</a></li>
    <li id="nav-ask-question"><a href="{% url ask_question %}">Ask Question</a></li>
  </ul>
</div>

وبعد ذلك ملء bodyclass مثل ذلك في قوالب الصفحة:

<!-- questions.html -->
{% extends "base.html" %}
{% block bodyclass %}questions{% endblock %}
...

وبعد ذلك، مع CSS التالية، يتم تمييز الرابط المناسب لكل صفحة:

body.questions #nav-questions a,
body.tags #nav-tags a,
body.users #nav-users a,
body.badges #nav-badges a,
body.ask-question #nav-ask-question a { background-color: #f90; }

وتعيين فئة على هيئة علامة لكل صفحة (يدويا أو من جانب الخادم). ثم في CSS الخاص بك استخدام تلك الفئة لتحديد الصفحة التي كنت على وتحديث أسلوب على هذا البند وفقا لذلك.

body.questions #questionsTab
{
    color: #f00;
}

إليك جيدة أطول تفسير

إذا لسبب ما لا تريد للتعامل مع هذا على جانب الخادم، يمكنك أن تجرب هذا:

// assuming this JS function is called when page loads
onload()
{
  if (location.href.indexOf('/questions') > 0)
  {
    document.getElementById('questionsLink').className = 'questionsStyleOn';
  }
}

ورمز جانب الخادم هو أسهل، فقط عن طريق وضع طبقة على وصلة على الصفحة الحالية، ولكن هذا هو الممكن أيضا على العميل مع جافا سكريبت، ووضع الدرجة الثانية على جميع العناصر في فئة معينة والتي لها أ href الذي يطابق الصفحة الحالية.

هل يمكن استخدام إما document.getElementsByTagName () أو document.links [] وننظر فقط لمن هم في فئة تدل على ارتباطات التنقل الخاصة بك ثم قم بتعيين الدرجة الثانية تدل الحالي إذا كان يتطابق مع URL الحالي.

ومحددات مواقع المعلومات ستكون النسبي، في حين document.URL لن. ولكن هل يمكن أن يكون في بعض الأحيان نفس هذه المشكلة مع مقابل النسبي المطلقة على جانب الملقم إذا كنت توليد المحتوى من تصميم الجدولية ويمكن للمستخدمين وضع أي عناوين المواقع المطلقة أو النسبية على أي حال.

وأنت بحاجة إلى رمز على الخادم لهذا الغرض. نهج التبسيط هو مقارنة URL للصفحة الحالية إلى URL في الارتباط. ومع ذلك نرى أن هناك العديد من عناوين URL مختلفة في ستاكوفيرفلوو فيه كل نتيجة في علامة التبويب "أسئلة" يتم تمييز.

وهناك نسخة أكثر تطورا يمكن إما وضع شيء في الدورة عند تغيير الصفحات (غير قوي جدا)؛ تخزين قائمة من / أنماط URL الصفحات التي لها صلة كل بند من بنود القائمة. أو ضمن رمز من الصفحة نفسها، تعيين متغير لتحديد العنصر الذي لتسليط الضوء.

وبعد ذلك، كما يشير جون ميليكين، وطرح فئة على الرابط أو على أحد عناصر الأم مثل "الحالية الصفحات" الذي سيسيطر على اللون منه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top