11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour bonjour Smiley smile

Voilà, j'essaye de compiler deux codes différents afin d'afficher une div avec un menu déroulant ( ul li ).

Voici le menu déroulant :


 <section class="main">
                <div class="wrapper-demo">
                    <div id="dd" class="wrapper-dropdown-5" tabindex="1">Selectionnez
                        <ul class="dropdown">
                            <li><a><p>Profile</p></a></li>
                            <li><a><p>Settings</p></a></li>
                            <li><a><p>Log out</p></a></li>
                        </ul>
                    </div>
                &#8203;</div>


            </section>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
            <script type="text/javascript">

                function DropDown(el) {
                    this.dd = el;
                    this.initEvents();
                }
                DropDown.prototype = {
                    initEvents : function() {
                        var obj = this;

                        obj.dd.on('click', function(event){
                            $(this).toggleClass('active');
                            event.stopPropagation();
                        }); 
                    }
                }

                $(function() {

                    var dd = new DropDown( $('#dd') );

                    $(document).click(function() {
                        // all dropdowns
                        $('.wrapper-dropdown-5').removeClass('active');
                    });

                });

            </script>

								.wrapper-dropdown-5 {
								    /* Size & position */
								    position: relative;
								    width: 150px;
								    margin: 0 auto;
								    padding: 12px 15px;

								    /* Styles */
								    background: #fff;
								    border-radius: 3px;
								    border: solid 1px #D8D8D8; 
								    cursor: pointer;
								    outline: none;
								    color: #666666;
								    font-weight: bold;
								    font-size: 12px;
								    font-family: "Lucida Grande",Arial,sans-serif;
								    -webkit-transition: all 0.3s ease-out;
								    -moz-transition: all 0.3s ease-out;
								    -ms-transition: all 0.3s ease-out;
								    -o-transition: all 0.3s ease-out;
								    transition: all 0.3s ease-out;
								}

								.wrapper-dropdown-5 p
								{
									padding-left: 10px;
									margin-top: 5px;
									margin-bottom: 5px;
								}

								.wrapper-dropdown-5:after { /* Little arrow */
								    content: "";
								    width: 0;
								    height: 0;
								    position: absolute;
								    top: 50%;
								    right: 15px;
								    margin-top: 0px;
								    border-width: 6px 6px 0 6px;
								    border-style: solid;
								    border-color: #333 transparent;
								}

								.wrapper-dropdown-5 .dropdown {
								    /* Size & position */
								    position: absolute;
								    top: 100%;
								    left: 0;
								    right: 0;

								    /* Styles */

								    background: #fff;
								    font-weight: normal;
								    color: #666666;
								    margin-top: 1px;
								    padding-left: 0px;
								    border-radius: 0 0 3px 3px;
								    border: 1px solid rgba(0,0,0,0.2);
								    border-top: none;
								    border-bottom: none;
								    list-style: none;
								    -webkit-transition: all 0.3s ease-out;
								    -moz-transition: all 0.3s ease-out;
								    -ms-transition: all 0.3s ease-out;
								    -o-transition: all 0.3s ease-out;
								    transition: all 0.3s ease-out;

								    /* Hiding */
								    max-height: 0;
								    overflow: hidden;
								}

								.wrapper-dropdown-5 .dropdown li {
								    padding: 0 0px ;
								}

								.wrapper-dropdown-5 .dropdown li a {
								    display: block;
								    text-decoration: none;
								    color: #666;

								    padding: 10px 0;
								    transition: all 0.3s ease-out;
								    border-bottom: 1px solid #e6e8ea;
								}

								.wrapper-dropdown-5 .dropdown li:last-of-type a {
								    border: none;
								}

								.wrapper-dropdown-5 .dropdown li i {
								    
								    color: inherit;
								    vertical-align: middle;
								}

								/* Hover state */

								.wrapper-dropdown-5 .dropdown li:hover a {
								    color: #333;
								    background-color: rgb(244, 244, 244);
								}

								/* Active state */

								.wrapper-dropdown-5.active {
								    border-radius: 3px 3px 0 0;
								    background-image: linear-gradient(#EAEAEA 0%, #F4F4F4 17%, #FFFFFF 100%);
								    box-shadow: none;
								    border: solid 1px #D8D8D8;

								}

								.wrapper-dropdown-5.active:after {
								    border-color: #666 transparent;
								}

								.wrapper-dropdown-5.active .dropdown {
								    border-bottom: 1px solid rgba(0,0,0,0.2);
								    max-height: 400px;
								}

								/* No CSS3 support: none */


Et j'aurais aimé lui ajouter la fonction suivante que j'ai trouvé avec <select>

 <div>
                <label>Compétences</label>
                <select onchange="document.getElementById('affichage').innerHTML = document.getElementById(this.value).innerHTML;">
                <option value="i4-4-2" selected>Logiciels</option>
                <option value="i4-4-3">Langues</option>
                <option value="i4-4-4">Langage informatique</option>
                </select>
                </div>

                <div id="affichage"></div>
                <div id="i4-4-2">
                    Contenu 4-4-2
                </div>
                <div id="i4-4-3">Contenu de 4-4-3</div>
                <div id="i4-4-4">
                    contenu 4-4-3
                </div>
            </div>

#i4-4-2
{
	display: none;
}

#i4-4-3
{
	display: none;
}

#i4-4-4
{
	display: none;
}


J'ai essayé de transposer le 2nd code sur le premier en remplacant "value" par "class" .. mais impossible. Peut être que ce code javascript est optimisé pour <select> uniquement.
J'aurais voulu avoir un avis ...

Merci beaucoup Smiley biggrin