টুইটার বুটস্ট্র্যাপে গাছগুলি [বন্ধ]


108

আমি এমন একটি গাছ তৈরির জন্য চেষ্টা করছি (ডিরেক্টরি গাছের মতো) যা যতটা সম্ভব সিএসএস এবং যতটা সম্ভব সামান্য জেএস ব্যবহার করে (কেবলমাত্র রাজ্য, ইত্যাদির জন্য), এবং আমি জানতে চাই যে বুটস্ট্র্যাপের জন্য কোনও ভাল বিদ্যমান ট্রি প্লাগইন রয়েছে কিনা? বা jquery-ui বুটস্ট্র্যাপ


রেফারেন্সের জন্য বা এই প্রশ্নটি সম্পর্কে বিভ্রান্ত লোকদের জন্য, আমি বুটস্ট্র্যাপের জন্য ডিনেট্রির মতো কিছু খুঁজছি ।

উত্তর:


181

উপর নির্মাণের Vitaliy এর সিএসএস এবং Mehmet এর jQuery এর , আমি পরিবর্তিত aকরার ট্যাগ spanট্যাগ এবং কিছু অন্তর্ভূক্ত Glyphicons এবং badging মধ্যে একটি বুটস্ট্র্যাপ গাছ উইজেট আমার নিন

উদাহরণ: আমার বুটস্ট্র্যাপ ট্রি উইজেট নেবে

অতিরিক্ত ক্রেডিটের জন্য, আমি গিথুব আইকনজিকিউরি এবং লিসইএস কোড হোস্ট করার জন্য একটি গিটহাব প্রকল্প তৈরি করেছি যা বুটস্ট্র্যাপে এই গাছের উপাদানটি যুক্ত করে। দয়া করে প্রকল্পের ডকুমেন্টেশনটি http://jhfunch.github.io/bootstrap-tree/docs/example.html এ দেখুন

পর্যায়ক্রমে, সিএসএস তৈরি করার জন্য এখানে কম উত্স রয়েছে ( জেএসফিডেল থেকে জেএস নেওয়া যেতে পারে ):

@import "../../../external/bootstrap/less/bootstrap.less"; /* substitute your path to the bootstrap.less file */
@import "../../../external/bootstrap/less/responsive.less"; /* optional; substitute your path to the responsive.less file */

/* collapsable tree */
.tree {
    .border-radius(@baseBorderRadius);
    .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
    background-color: lighten(@grayLighter, 5%);
    border: 1px solid @grayLight;
    margin-bottom: 10px;
    max-height: 300px;
    min-height: 20px;
    overflow-y: auto;
    padding: 19px;
    a {
        display: block;
        overflow: hidden;
        text-overflow: ellipsis;
        width: 90%;
    }
    li {
        list-style-type: none;
        margin: 0px 0;
        padding: 4px 0px 0px 2px;
        position: relative;
        &::before, &::after {
            content: '';
            left: -20px;
            position: absolute;
            right: auto;
        }
        &::before {
            border-left: 1px solid @grayLight;
            bottom: 50px;
            height: 100%;
            top: 0;
            width: 1px;
        }
        &::after {
            border-top: 1px solid @grayLight;
            height: 20px;
            top: 13px;
            width: 23px;
        }
        span {
            -moz-border-radius: 5px;
            -webkit-border-radius: 5px;
            border: 1px solid @grayLight;
            border-radius: 5px;
            display: inline-block;
            line-height: 14px;
            padding: 2px 4px;
            text-decoration: none;
        }
        &.parent_li > span {
            cursor: pointer;
            /*Time for some hover effects*/
            &:hover, &:hover+ul li span {
                background: @grayLighter;
                border: 1px solid @gray;
                color: #000;
            }
        }
        /*Remove connectors after last child*/
        &:last-child::before {
            height: 30px;
        }
    }
    /*Remove connectors before root*/
    > ul > li::before, > ul > li::after {
        border: 0;
    }
}

সাবাশ. অবশ্যই, .parent_liতাদের পিতামাতার উপর আবদ্ধ হয়ে থাকলে আপনার পটভূমির রঙটি হারিয়ে যায় এবং ধূসর হয়ে যায় এমন লি বাচ্চাদের অদ্ভুত আচরণগুলি (আপনার দ্বিতীয় গাছে)।
কুমারহর্ষ

ধন্যবাদ @ হর্ষ। আপনার মনে হয় এমন হোভার আচরণটি ব্যবহারকারীকে একটি ভিজ্যুয়াল সূচক দেওয়ার জন্য ভিটালির প্রোগ্রামিং অনুসরণ করে যা নোডগুলি ভেঙে যাবে।
জেরোমি ফ্রেঞ্চ

1
@ জেরোমিফ্রঞ্চ এই গাছটির খুব সুন্দর, মসৃণ অভিজ্ঞতা রয়েছে। আমি অনুসন্ধান করার পরে ঠিক কী ছিল। ভাল কাজ.
নাথন মুস

5
কোডের জন্য ধন্যবাদ আপনি কিভাবে ডিফল্ট পতন? আপনি যখন পৃষ্ঠাটি পরিদর্শন করেন তখন আমি এটিটি ধসে পড়তে চাই? তুমি কি আমাকে সাহায্য করবে? ধন্যবাদ।
এরডেমে এস

5
jsfiddle.net/jayhilwig/hv8vU :: আমি কোড আপডেট করেছি এবং বুটস্ট্র্যাপ
3.0.০ এর

79

আপনি কি বিশ্বাস করতে পারেন যে নীচের চিত্রের ট্রিভিউ কোনও জাভাস্ক্রিপ্ট ব্যবহার করে না, তবে কেবল CSS3 এ নির্ভর করে? এই CSS3 ট্রিভিউটি দেখুন , যা টুইটার বুটস্প্র্যাপের সাথে ভাল:

গাছ দেখুন

আপনি এই সম্পর্কে আরও তথ্য এখানে পেতে পারেন http://acidmartin.wordpress.com/2011/09/26/css3-treevew-no-javascript/


বাহ ... এটি একটি ভাল ... আমাকে এটি খতিয়ে দেখতে হবে ... ধন্যবাদ ...
কুমারহর্ষ

1
@ হর্ষ শিওর, এটির বুটস্ট্র্যাপ প্রস্তুত এবং দয়া করে আমার উত্তরটি যদি সহায়ক হয় তবে তা গ্রহণ করুন। :) পিএস: আমরা এটি ব্যবহার করছি। :)
প্রবীণ কুমার পুরুষোথমণ

সমাধানটি ভাল বলে মনে হচ্ছে তবে কয়েকটি বৈশিষ্ট্য রয়েছে যা আমরা চেয়েছিলাম এবং এই সংস্করণে সরবরাহ করা হয় না যেমন শাখা হাইলাইটিং ইত্যাদি But তবে যাইহোক, গাছের স্টাইলিং কীভাবে করা যায় এটির একটি খুব ভাল উদাহরণ
কুমারহর্ষ

1
একটি চমৎকার উদাহরণ খুঁজে পেয়েছি thecssninja.com/demo/css_tree
সূর্য

1
উত্তরে উল্লেখযোগ্য যে ব্লগ পোস্টটিতে উত্তরে উল্লেখ করা হয়েছে কিছু সাধারণ সিএসএস রয়েছে, যা আমার পক্ষে কাজ করে না, তবে আসল ডেমোতে আরও কিছু জটিল (এবং ব্যাখ্যা করা হয়নি) রয়েছে।
রবিন সবুজ

53

কেউ যদি হর্ষের উত্তর থেকে ট্রিভিউর উল্লম্ব সংস্করণ চান তবে আপনি কিছু সময় বাঁচাতে পারবেন:

http://jsfiddle.net/Fh47n/

.tree li {
    margin: 0px 0;

    list-style-type: none;
    position: relative;
    padding: 20px 5px 0px 5px;
}

.tree li::before{
    content: '';
    position: absolute; 
    top: 0;
    width: 1px; 
    height: 100%;
    right: auto; 
    left: -20px;
    border-left: 1px solid #ccc;
    bottom: 50px;
}
.tree li::after{
    content: '';
    position: absolute; 
    top: 30px; 
    width: 25px; 
    height: 20px;
    right: auto; 
    left: -20px;
    border-top: 1px solid #ccc;
}
.tree li a{
    display: inline-block;
    border: 1px solid #ccc;
    padding: 5px 10px;
    text-decoration: none;
    color: #666;
    font-family: arial, verdana, tahoma;
    font-size: 11px;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}

/*Remove connectors before root*/
.tree > ul > li::before, .tree > ul > li::after{
    border: 0;
}
/*Remove connectors after last child*/
.tree li:last-child::before{ 
      height: 30px;
}

/*Time for some hover effects*/
/*We will apply the hover effect the the lineage of the element also*/
.tree li a:hover, .tree li a:hover+ul li a {
    background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
}
/*Connector styles on hover*/
.tree li a:hover+ul li::after, 
.tree li a:hover+ul li::before, 
.tree li a:hover+ul::before, 
.tree li a:hover+ul ul::before{
    border-color:  #94a0b4;
}

1
সহজ এবং মার্জিত। আপভোটড :)
thefourtheye

1
ঠিক নিখুঁত সমাধান!
কর্সায়ার

বাহ, দুর্দান্ত সমাধান - এবং সহজেই বর্ধনযোগ্য!
rkallensee

ধসের প্রসারণ কার্যকারিতা কোথায়?
সৈয়দ আকিল আশিক

41

সিএসএস 3 দিয়ে এখনও গাছের সন্ধানকারীদের জন্য, এটি নেটটিতে পাওয়া একটি দুর্দান্ত কোড code

http://thecodeplayer.com/walkthrough/css3-family-tree

এইচটিএমএল

<div class="tree">
  <ul>
    <li>
      <a href="#">Parent</a>
      <ul>
        <li>
          <a href="#">Child</a>
          <ul>
            <li>
              <a href="#">Grand Child</a>
            </li>
          </ul>
        </li>
        <li>
          <a href="#">Child</a>
          <ul>
            <li><a href="#">Grand Child</a></li>
            <li>
              <a href="#">Grand Child</a>
              <ul>
                <li>
                  <a href="#">Great Grand Child</a>
                </li>
                <li>
                  <a href="#">Great Grand Child</a>
                </li>
                <li>
                  <a href="#">Great Grand Child</a>
                </li>
              </ul>
            </li>
            <li><a href="#">Grand Child</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

সিএসএস

* {margin: 0; padding: 0;}

.tree ul {
  padding-top: 20px; position: relative;

  transition: all 0.5s;
  -webkit-transition: all 0.5s;
  -moz-transition: all 0.5s;
}

.tree li {
  float: left; text-align: center;
  list-style-type: none;
  position: relative;
  padding: 20px 5px 0 5px;

  transition: all 0.5s;
  -webkit-transition: all 0.5s;
  -moz-transition: all 0.5s;
}

/*We will use ::before and ::after to draw the connectors*/

.tree li::before, .tree li::after{
  content: '';
  position: absolute; top: 0; right: 50%;
  border-top: 1px solid #ccc;
  width: 50%; height: 20px;
}
.tree li::after{
  right: auto; left: 50%;
  border-left: 1px solid #ccc;
}

/*We need to remove left-right connectors from elements without 
any siblings*/
.tree li:only-child::after, .tree li:only-child::before {
  display: none;
}

/*Remove space from the top of single children*/
.tree li:only-child{ padding-top: 0;}

/*Remove left connector from first child and 
right connector from last child*/
.tree li:first-child::before, .tree li:last-child::after{
  border: 0 none;
}
/*Adding back the vertical connector to the last nodes*/
.tree li:last-child::before{
  border-right: 1px solid #ccc;
  border-radius: 0 5px 0 0;
  -webkit-border-radius: 0 5px 0 0;
  -moz-border-radius: 0 5px 0 0;
}
.tree li:first-child::after{
  border-radius: 5px 0 0 0;
  -webkit-border-radius: 5px 0 0 0;
  -moz-border-radius: 5px 0 0 0;
}

/*Time to add downward connectors from parents*/
.tree ul ul::before{
  content: '';
  position: absolute; top: 0; left: 50%;
  border-left: 1px solid #ccc;
  width: 0; height: 20px;
}

.tree li a{
  border: 1px solid #ccc;
  padding: 5px 10px;
  text-decoration: none;
  color: #666;
  font-family: arial, verdana, tahoma;
  font-size: 11px;
  display: inline-block;

  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;

  transition: all 0.5s;
  -webkit-transition: all 0.5s;
  -moz-transition: all 0.5s;
}

/*Time for some hover effects*/
/*We will apply the hover effect the the lineage of the element also*/
.tree li a:hover, .tree li a:hover+ul li a {
  background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
}
/*Connector styles on hover*/
.tree li a:hover+ul li::after, 
.tree li a:hover+ul li::before, 
.tree li a:hover+ul::before, 
.tree li a:hover+ul ul::before{
  border-color:  #94a0b4;
}

PS: কোডটি বাদ দিয়ে, সাইটটি যেভাবে এটি কার্যকরভাবে দেখায় তা আমি পছন্দ করি ... সত্যই অভিনব।


5
এটি আপনার প্রশ্নে যে ধরণের গাছ পরামর্শ দিয়েছেন সেটির মতো এটি আসলেই নয়। আমি বিশ্বাস করি যে প্রবীণ কুমারকে তার উত্তর দিয়ে পুরষ্কার দেওয়া উচিত
ব্লোজি

2
আমি প্রথমটির মতো একটি গাছের সন্ধান করছিলাম, এই উত্তরটি দেখেছি এবং পরিবর্তে এটি ব্যবহার করার সিদ্ধান্ত নিয়েছি। মজার কীভাবে অনুপ্রেরণা একটি সমাধান পরিবর্তন করতে পারে!
এরিক

2
@ ব্লসি: আমি আপনার পরামর্শটি বিবেচনায় নিয়েছি এবং ন্যায়বিচারের ব্যবস্থা করা হয়েছে, হ্যাঁ। কিছু এলোমেলো লোকের দ্বারা কিছু র্যান্ডম অনুরোধের কারণে একটি স্বতন্ত্র প্রকল্পটি বিকশিত হতে দেখে ভাল good
কুমারহর্ষ


36

যদি কেউ ভিটালিয়া বাইচিকের উত্তর থেকে ট্রিভিউয়ের বিস্তৃত / সংযোগযোগ্য সংস্করণ চান তবে আপনি কিছুটা সময় বাঁচাতে পারবেন :)

http://jsfiddle.net/mehmetatas/fXzHS/2/

$(function () {
    $('.tree li').hide();
    $('.tree li:first').show();
    $('.tree li').on('click', function (e) {
        var children = $(this).find('> ul > li');
        if (children.is(":visible")) children.hide('fast');
        else children.show('fast');
        e.stopPropagation();
    });
});

:) সুন্দর! ভাল ধারণা +1।
অ্যালেক্স

1
আমি added ('। ট্রি> উল> লি: প্রথম-শিশু') যুক্ত করেছি show পৃষ্ঠায় একাধিক গাছ সমর্থন। ধন্যবাদ
উপজাতি 84

8

আরেকটি দুর্দান্ত ট্রিউভিউ জ্যাকুয়েরি প্লাগইন হ'ল http://www.jstree.com/

একটি অগ্রিম দর্শনের জন্য আপনার jquery-treetable http://ludo.cubicphuse.nl/jquery-plugins/treeTable/doc/ পরীক্ষা করা উচিত


সাইট অনুসারে, এপ্রিল ২০১০ থেকে এটি আর সমর্থন করা হচ্ছে না
লেভেলনিস

ওহ এটি লজ্জাজনক যে এটি সমর্থন করা হচ্ছে না ... যদিও ভাল দেখাচ্ছে।
কুমারহর্ষ

3
হাই, উভয় লাইব্রেরি আপ টু ডেট এবং সমর্থিত
গাল মার্গালিট

তারা সমর্থিত - দেখুন github.com/ludo/jquery-treetable/releases
Bartek Jablonski
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.