إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

قائمة منسدلة متعددة المستويات أفقية ورأسية, CSS مع تأثيرات jQuery

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • قائمة منسدلة متعددة المستويات أفقية ورأسية, CSS مع تأثيرات jQuery



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

    * 100% CSS، دون إي إضافات، فقط القليل من جافاسكريبت من أجل تأثيرات jQuery.
    * متعددة المستويات، تصل الى 3 مستويات -كل مستوى يمكن أن يكون بلون مختلف-
    * توزيع القائمة بشكل طبيعي عن طريق الوسم الأوسمة <ul>, <li>.
    * سريعة وخفيفة الوزن، تظهر مباشرة بمجرد تحميل الصفحات.
    * توافق كامل ودعم جميع المتصفحات بما في ذلك IE6!! بخطوة إضافية.

    بنية القائمة html
    كود:
    [LEFT]<ul>
    <li><a href="#">Root Link</a></li>
    <li><a class="popup_down" href="#">Root Link</a>
     <!-- المستوى الأول -->
     <ul>
     <li><a href="#">Sub Link</a></li>
     <li><a class="popup" href="#">Sub Link</a>
      <!-- المستوى الثاني -->
      <ul>
      <li><a href="#">Sub Link</a></li>
      <li><a class="popup" href="#">Sub Link</a>
       <!-- المستوى الثالث -->
       <ul>
       <li><a href="#">Sub Link</a></li>
       <li>...</li>
       </ul>
       <!-- / المستوى الثالث -->
      </li>
      </ul>
      <!-- / المستوى الثاني -->
     </li>
     </ul>
     <!--  / المستوى الأول -->
    </li>
    </ul>
    [/LEFT]
    كل بند <li> يتفرع منه قائمة فرعية أخرى <ul>، وهناك فئة مخصصة بإسم popup_down توضع مع وصلات بنود القائمة الرئيسية بغرض عرض صورة للسهم جهة الأسفل، وفئات أخري بإسم popup لنفس الغرض لوصلات البنود الداخلية، سوف تساعدك في حالة رغبتك بتغيير التصميم.

    إضافة مكتبة jQuery
    من موقع jQuery نحصل على آخر إصدار من المكتبة لربطها برأس الصفحة، وإن كنت من مستخدمي blogger يمكنك إيجاد رابط مباشر لعرض المكتبة دون تحميلها بالدخول على Google AJAX Libraries وأحصل على وصلة لآخر إصدار من المكتبة لربطها برأس الصفحة داخل الوسم <head> هكذا:
    كود:
    [LEFT]<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>[/LEFT]
    إضافة تأثيرات jQuery
    داخل وسم <script> جديد في رأس الصفحة وضعنا فيه الشفرة التالية، أو أربط الشفرة في ملف خارجي واستدعيها داخل الصفحة.
    كود:
    [LEFT]$(document).ready(function () {
    
    // Effect
    $("#nav-h li,#nav-v li").hover(
    function () {
    // التأثيرات التى تظهر عند التأشير لفتح القائمة
    $(this).find('ul:first').css({visibility: "visible",display: "none"}).toggle('fast');
    }, 
    function () {
    // التأثيرات عند الإفلات
    $(this).find('ul:first').css({visibility: "hidden"});
    }
    );
    
    });
    [/LEFT]
    بخبرتك في Jquery يمكنك التحكم في شكل حركة فتح القائمة، لكن في نفس الوقت وضعك للشفرة من عدمة غير مسئول عن ظهور القائمة، فهي تظهر مباشرة من خلال خصائص css والشفرة هي مجرد تأثير إضافى .

    تصحيح العرض داخل IE 6
    ولو إننا مش هانكون أحسن من جوجل (أوقفت دعم مواقعها وخدماتها لمتصفح الاكسبلورور النسخة 6) لكن للأسف أضيف هذا الجزء حتى لا تأتيني ردود تطلب دعمه كما يحدث دائماً، متصفح IE6 لا يدعم pseudo-classes مثل: hover: وذلك على كل الأوسمة بإستثناء الوسم <a> فالحلول مع Jquery أسهل وذلك بإضافة فئه calss خاصة لهذه الغرض بإسم iehover لكي تستخدم وتظهر القائمة عند التأشير عليها، وبمعاينك لخصائص css سوف تلاحظ وجود تلك الفئة متكررة لهذا الغرض...
    كود:
    [LEFT]$(document).ready(function () {
    
    // Effect
    $("#nav-h li,#nav-v li").hover(
    function () {
    // التأثيرات التى تظهر عند التأشير لفتح القائمة
    $(this).find('ul:first').css({visibility: "visible",display: "none"}).toggle('fast');
    }, 
    function () {
    // التأثيرات عند الإفلات
    $(this).find('ul:first').css({visibility: "hidden"});
    }
    );
    
    
    // Fix IE
    $("#nav-h li,#nav-v li").hover(
    function () { 
    $(this).addClass("iehover"); 
    },
    function () { 
    $(this).removeClass("iehover");
    }
    );
    
    });
    [/LEFT]

  • #2
    كيفية عمل قائمة منسدلة للموقع باستخدام Ext Core



    بسم الله الرحمن الرحيم
    كيفية عمل قائمة منسدلة للموقع باستخدام Ext Core
    وجدت شرح مميز فى إحدى المدونات (للأسف توقف عملها :)) ) وأضفت له بعض التعديلات لتصحيح طريقة العرض.

    هناك العديد من مكتبات تطوير بنية الصفحات باستخدام Javascript و من أشهرها مكتبة jQuery و التي يكثر استخدامها الآن في العديد من المواقع الكبرى و يمكن تطويعها لعمل العديد من التأثيرات الرائعة و أيضاً مكتبة Mootools و Prototype و غيرها . و لكننا اليوم على موعد مع مجموعة جديدة ظهرت حديثاً للنور و هي مكتبة Ext Core .


    وتتمتع مكتبة Ext Core بسهولة الاستخدام و السرعة التي تظهر في أدائها , و سنسعترض في هذا المقال كيفية عمل قائمة منسدلة سواء عرضية أو طولية مع مساعدة CSS في تطوير الشكل .
    هناك العديد من الأمثلة المتوفرة لعمل قائمة منسدلة باستخدام CSS فقط و التحكم فيها من خلال عدة عناصر مثل Position و z-index للتحكم في مكان الظهور و كيفية الاخفاء , و لكن أحياناً ما نحتاج لبعض التأثير الجمالي على القائمة التي نستخدمها . القائمة التي لدينا اليوم بسيطة و سهلة و التعديل فيها أيضاً بسيط سواء في كود HTML أو في CSS .



    كيفية إدراج مكتبة Ext Core في الصفحة :-
    هناك الطريقة التقليدية و هي تنزيل ملف Ext Core على موقعك و إضافته من خلال عنصر Script إلى وسم < head > , و لكن من الأفضل لسرعة أداء موقعك جلب مكتبات تطوير بنية الصفحات Ajax Libraries API من خلال Google فهي تساهم في سرعة الصفحة الخاصة بك و توفير مساحة من عملية تحميل الملف كل مرة من خلال موقعك :

    كود PHP:
    <script src="http://ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core-debug.js" type="text/javascript"></script
    يمكن جلب روابط المكتبات الأخرى مثل jQuery, Mootools من خلال الصفحة الخاصة بها على Google Code.

    إضافة الملفات اللازمة لتشغيل القائمة:-
    يجب إضافة مجموعة الملفات اللازمة لتشغيل القائمة سواء ملفات الجافاسكربت أو ملفات CSS و يتم إضافتها داخل وسم وسم <head> :

    كود:
    [LEFT]<link href="menu.css" rel="stylesheet" />
    <script src="http://ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core-debug.js" type="text/javascript"></script>
    <script src="menu.js" type="text/javascript"></script>
    <script type="text/javascript">
                Ext.onReady(function() {
                    new Ext.ux.Menu('simple-horizontal-menu', {
                        transitionType: 'slide',
                        direction: 'horizontal', // default
                        delay: 0.2,              // default
                        autoWidth: true,         // default
                        transitionDuration: 0.3, // default
                        animate: true,           // default
                        currentClass: 'current'  // default
                    });
                    new Ext.ux.Menu('simple-vertical-menu', {
                        direction: 'vertical'
                    });
                });
            </script>[/LEFT]
    في الكود السابق تمت إضافة ملفات Javascript و CSS لتشغيل القائمة و إضافة الكود الخاص بإعدادات القائمتين العرضية أو الطولية .

    إضافة القائمة في الصفحة:-
    لاستخدام القائمة في الصفحة ما عليك إلا اختيار إذا كنت ستستخدم القائمة الطولية أو العرضية


    القائمة العرضية:-
    و يكون كود HTML للقائمة العرضية كالتالي :

    كود:
    [LEFT]<ul id="simple-horizontal-menu">
        <li><a href="#">عنصر قائمة رئيسية 1</a></li>
        <li><a href="#">عنصر قائمة رئيسية 2</a></li>
        <li><a href="#">عنصر قائمة رئيسية 3</a>
        <ul>
            <li><a href="#">عنصر قائمة داخلية 1</a></li>
            <li><a href="#">عنصر قائمة داخلية 2</a></li>
            <li><a href="#">عنصر قائمة داخلية 3</a></li>
        </ul>
        </li>
        <li><a href="#">عنصر قائمة رئيسية 4</a>
            <ul>
            <li><a href="#">عنصر قائمة داخلية 4</a></li>
            <li><a href="#">عنصر قائمة داخلية 5</a>
            <ul>
                <li><a href="#">عنصر قائمة داخلية 1</a></li>
                <li><a href="#">عنصر قائمة داخلية 2</a></li>
                <li><a href="#">عنصر قائمة داخلية 3</a></li>
            </ul>
            </li>
            <li><a href="#">عنصر قائمة داخلية 6</a></li>
        </ul>
        </li>
    </ul>[/LEFT]
    في الكود السابق تم استدعاء إعدادات القائمة و تحويلها لقائمة عرضية بمساعدة ملفات التنسيق و الجافاسكربت من خلال معرف simple-horizontal-menu , ثم البدء في تكوين قائمة باستخدام عنصر < ul > و اشتقاق العناصر الداخلية منه باستخدام < li > , و كذلك تكوين قائمة منبثقة من العنصر الداخلي كما في الكود السابق :
    كود:
    [LEFT]<li><a href="#">عنصر قائمة داخلية 2</a>
            <ul>
                <li><a href="#">عنصر قائمة داخلية 1</a></li>
                <li><a href="#">عنصر قائمة داخلية 2</a></li>
                <li><a href="#">عنصر قائمة داخلية 3</a></li>
            </ul>
            </li>[/LEFT]
    القائمة الطولية
    كود:
    [LEFT]<ul id="simple-vertical-menu">
        <li><a href="#">تجربة</a>
        <ul>
            <li><a href="#">عنصر قائمة داخلية 1</a></li>
            <li><a href="#">عنصر قائمة داخلية 2</a>
            <ul>
                <li><a href="#">sub عنصر قائمة داخلية 1</a></li>
                <li><a href="#">sub عنصر قائمة داخلية 2</a></li>
                <li><a href="#">sub عنصر قائمة داخلية 3</a></li>
            </ul>
            </li>
            <li><a href="#">عنصر قائمة داخلية 3</a></li>
        </ul>
        </li>
        <li><a href="#">عنصر قائمة رئيسية 2</a></li>
        <li><a href="#">عنصر قائمة رئيسية 3</a>
        <ul>
            <li><a href="#">عنصر قائمة داخلية 4</a></li>
            <li><a href="#">عنصر قائمة داخلية 5</a></li>
            <li><a href="#">عنصر قائمة داخلية 6</a></li>
        </ul>
        </li>
        <li><a href="#">عنصر قائمة رئيسية 4</a></li>
    </ul>[/LEFT]
    نفس الفكرة في القائمة الطولية من خلال استدعاء معرف simple-vertical-menu لجلب إعدادات القائمة الطولية و منها يتم استخدام عناصر < ul > و < li > لعمل القائمة .

    ملف التنسيق CSS :-
    أما التنسيق باستخدام CSS فهو مثل التنسيق لأي قائمة أخرى يتم عملها باستخدام HTML من خلال التحكم بتنسيق عناصر ul, li, a و التي تعرض القائمة في HTML

    كود:
    [LEFT]body{
    direction: rtl;
    }
    
    .ux-menu-container {
        position: relative;
    }
    
    .ux-menu,
    .ux-menu ul {
        list-style-image: none;
        list-style-position: outside;
        list-style-type: none;
        margin: 0;
        padding: 0;
        line-height: 1;
    }
    
    .ux-menu li {
        position: relative;
        float: right;
    }
    
    .ux-menu ul {
        position: absolute;
        top: 0;
        left: 0;
    }
    
    .ext-border-box .ux-menu-ie-iframe,
    .ext-ie7 .ux-menu-ie-iframe {
        padding: 0;
        margin: 0;
        position: absolute;
        top: 0;
        left: 0;
        display: none;
        zoom: 1;
        z-index: -1;
        filter:mask();
    }
    
    .ux-menu-vertical .ux-menu-item-main {
        clear: left;
    }
    
    .ux-menu a {
        display: block;
        position: relative;
        text-decoration: none;
        color: #432;
        border-left: 1px solid #e3dad1;
        border-top: 1px solid #e3dad1;
        border-bottom: 1px solid #e3dad1;    
        background: #f3efec url('images/menu-item-bg.png') repeat;
        font-size: 12px;
        line-height: 12px;
        padding: 10px 14px;
    }
    
    .ux-menu a.ux-menu-link-last {
        border-right: 1px solid #e3dad1;
    }
    
    ux.menu ul a {
        width: 100%;
    }
    
    .ux-menu a:focus,
    .ux-menu a:hover,
    .ux-menu a.ux-menu-link-hover {
        border-color: #d2e3f4;
        background: url(images/'menu-item-bg-over.png') repeat;
        outline: 0;
    }
    
    .ext-ie .ux-menu-clearfix {
        zoom: 1;
    }
    
    .ux-menu-clearfix:after {
        content: ".";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    
    .ux-menu a.ux-menu-link-parent {
        padding-right: 24px;
        min-width: 1px;
    }
    
    .ux-menu ul a,
    .ux-menu.ux-menu-vertical a {
        border-bottom: 0px;    
        border-right: 1px solid #e3dad1;
    }
    
    .ux-menu ul a.ux-menu-link-last,
    .ux-menu.ux-menu-vertical a.ux-menu-link-last {
        border-bottom: 1px solid #e3dad1;
    }
    
    .ux-menu-arrow {
        display: block;
        width: 8px;
        height: 6px;
        right: 10px;
        top: 14px;
        position: absolute;
        background: url('images/menu-arrow-down.png') no-repeat;
        font-size: 0;
    }
    
    .ux-menu.ux-menu-vertical .ux-menu-arrow,
    .ux-menu ul .ux-menu-arrow  {
        width: 6px;
        height: 8px;
        top: 13px; 
        background: url('images/menu-arrow-right.png') no-repeat;
    }
    
    .ext-border-box .ux-menu-arrow {
        top: 17px;
    }
    .ext-border-box .ux-menu.ux-menu-vertical .ux-menu-arrow,
    .ext-border-box .ux-menu ul .ux-menu-arrow {
        top: 16px;
    }
    
    .ux-menu ul.ux-menu-hidden {
        display: none;
    }[/LEFT]
    الملفات المرفقة

    تعليق


    • #3
      جزاك الله خيرا أخى محمود

      سبحان الله وصلت للمشاركة أثناء البحث

      بارك الله فيك

      تعليق


      • #4
        شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

        تعليق


        • #5
          جزاك الله خيرا أخى محمود

          تعليق


          • #6
            جزاك الله خيرا أخي محمود وبارك الله فيك

            تعليق


            • #7
              مشكور يا أخى جزاك الله خيراً

              تعليق


              • #8
                بارك الله فيك تشكر على كل ما قدمت

                تعليق


                • #9
                  جميل منك ياجميل

                  تعليق


                  • #10
                    شـكــرا وبارك الله فيك .

                    تعليق

                    مواضيع تهمك

                    تقليص

                    المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                    المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                    المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                    المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                    المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                    يعمل...
                    X