বুটস্ট্র্যাপ 4 কার্ডকে কীভাবে কার্ড-কলামগুলিতে একই উচ্চতা তৈরি করবেন?


134

আমি বুটস্ট্র্যাপ 4 আলফা 2 ব্যবহার করছি এবং কার্ডগুলিতে সুবিধা নিচ্ছি। বিশেষত, আমি অফিসিয়াল ডক্স থেকে নেওয়া এই উদাহরণটি নিয়ে কাজ করছি । আমি কীভাবে সমস্ত কার্ডকে একই উচ্চতা হিসাবে তৈরি করতে পারি?

আমি এখনই যা ভাবতে পারি তা নিম্নলিখিত সিএসএস বিধিটি সেট করে দিচ্ছে:

.card {
    min-height: 200px;
}

তবে এটি কেবল একটি শক্ত কোডড সমাধান যা সাধারণ ক্ষেত্রে কাজ করবে না। আমার দৃষ্টিতে কোডটি ডক্সের মতো একই অর্থাত:

<div class="card-columns">
  <div class="card">
    <img class="card-img-top" data-src="..." alt="Card image cap">
    <div class="card-block">
      <h4 class="card-title">Card title that wraps to a new line</h4>
      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
    </div>
  </div>
  <div class="card card-block">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>
        <small class="text-muted">
          Someone famous in <cite title="Source Title">Source Title</cite>
        </small>
      </footer>
    </blockquote>
  </div>
  <div class="card">
    <img class="card-img-top" data-src="..." alt="Card image cap">
    <div class="card-block">
      <h4 class="card-title">Card title</h4>
      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
    </div>
  </div>
  <div class="card card-block card-inverse card-primary text-xs-center">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat.</p>
      <footer>
        <small>
          Someone famous in <cite title="Source Title">Source Title</cite>
        </small>
      </footer>
    </blockquote>
  </div>
  <div class="card card-block text-xs-center">
    <h4 class="card-title">Card title</h4>
    <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
  </div>
  <div class="card">
    <img class="card-img" data-src="..." alt="Card image">
  </div>
  <div class="card card-block text-xs-right">
    <blockquote class="card-blockquote">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
      <footer>
        <small class="text-muted">
          Someone famous in <cite title="Source Title">Source Title</cite>
        </small>
      </footer>
    </blockquote>
  </div>
  <div class="card card-block">
    <h4 class="card-title">Card title</h4>
    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
  </div>
</div>

এখন পর্যন্ত কোন প্রচেষ্টা? কোন কোড শেয়ার করতে হবে?
বাও

2
সেই উদাহরণটি রাজমিস্ত্রি-জাতীয় কলামগুলির জন্য। স্টাইলের পুরো বিষয়টি হ'ল কার্ডগুলি বিভিন্ন উচ্চতার। যদি আপনি সমান উচ্চতা চান তবে একটি ডেক ব্যবহার করুন এবং ফ্লেক্সবক্স মোড সক্ষম করুন।
কোয়ান্টিন

1
ডেক কেবল একটি সারিতে কার্ডের জন্য কাজ করে। আমি যা চাই তা হ'ল একই প্রভাব card-columnsতবে একই উচ্চতা বজায় রাখা।
ব্লুসার্ফার

উত্তর:


161

আপনি ক্লাসগুলি "সারি" বা "কলাম" এ রাখতে পারেন? আপনি যদি সারিটিতে এটি ব্যবহার করেন তবে কার্ডগুলিতে (সীমান্তে) দৃশ্যমান হবে না। https://v4-alpha.getbootstrap.com/utilities/flexbox/#align-items

<div class="container">
    <div class="row">
          <div class="col-lg-4 d-flex align-items-stretch">

এখানে অন্যান্য উত্তরগুলির মধ্যে কিছুগুলি 'অসম্পূর্ণ' বলে মনে হচ্ছে। কেন একটি ন্যূনতম উচ্চতা বা আরও খারাপ স্থির উচ্চতা ব্যবহার করবে?

আমি ভেবেছিলাম এই সমস্যাটি (সমান উচ্চতা) ভাসমান ব্লক ডিভাইস থেকে দূরে অগ্রগতির কারণ ছিল?


3
এইচ -100 একটি নির্দিষ্ট উচ্চতা নয়, এটি উচ্চতার 100% (সারিটির)
কনিয়াক

এই ACed উত্তর হওয়া উচিত
meeps

এটিই আসল উত্তর
অ্যান্ড্রু বুলক

হ্যাঁ, আমি বুঝতে পারি যে বন্ধুটি আমি এইচ -100 (এই পৃষ্ঠাটি নীচে স্ক্রোল) উল্লেখ করছি না।
কেরি 7777

139

আমি বুটস্ট্র্যাপ 4 (বিটা 2) ব্যবহার করছি। ইতিমধ্যে পরিস্থিতি পরিবর্তিত হয়েছে বলে মনে হচ্ছে। আমি একই সমস্যা ছিল এবং একটি সহজ সমাধান খুঁজে পেয়েছি। এটি আমার কোড:

<div class="container-fluid content-row">
    <div class="row">
        <div class="col-sm-12 col-lg-6">
            <div class="card h-100">
                … content card …
            </div>
        </div>
        … all the other cards … 
    </div>
</div>

"কল-স্ম -12 কল-এলজি -6" দিয়ে আমি কার্ডগুলিকে প্রতিক্রিয়াশীল করে তুলেছি। "কার্ড এইচ -100" দিয়ে আমি সমস্ত কার্ড তাদের পিতামাতার কলামের উচ্চতায় সেট করেছি। আমার সিস্টেমে এটি কাজ করে তবে আমি সমর্থক নই। সুতরাং, আশা করি আমি কাউকে সাহায্য করেছি।


16
খুব সহজ এইচ -100
পিএনসি

9
.h-100 - উজ্জ্বল
জেক্রেন

2
আইইয়ের d-flexসাথে সমস্যা সৃষ্টি করার সময় এটি আমার জন্য কৌশলটি করেছে (যা আমাকে সমর্থন করতে হবে)। আমি mb-4কার্ডগুলি আরও কিছু আলাদা করার জন্য প্যারেন্ট ডিভের সাথে একটি যুক্ত করেছি।
চার্লস পাস্কে

এবং এটিকে উল্লম্বভাবে স্ক্রোল করতে আপনি প্রি-স্ক্রোলবলও ব্যবহার করতে পারেন
মুহাম্মদ ওয়াকাস আজিজ

আমি সারিগুলির মধ্যে প্যাডিং যুক্ত করতে .col- * শ্রেণীর সাথে সমস্ত বিভাগে .py-2 শ্রেণি যুক্ত করব।
কোনাক

93

সেরা সমাধান, বুটস্ট্র্যাপ 4 এ আপনার যা দরকার তা রয়েছে: ব্যবহার করুন .d-flexএবং .flex-fillশ্রেণি। card-decksতারা প্রতিক্রিয়াশীল না হিসাবে ব্যবহার করবেন না । আমি ব্যবহার করেছি col-sm, আপনি যে .colক্লাসটি চান তা ব্যবহার করতে পারেন, বা col-lg-xএক্স কমান্ডের প্রস্থের কলামের সংখ্যা যেমন 4 বা 3 ব্যবহার করতে পারেন সেরা দেখার জন্য যদি পোস্টে কলাম প্রতি 3 বা 4 থাকে

জানোয়ারটি এখানে, এটি কার্যকর অবস্থায় দেখতে ব্রাউজার উইন্ডোটি এক্সএসে হ্রাস করার চেষ্টা করুন:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />

<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i" rel="stylesheet">
<div class="container">
  <div class="row my-4">
    <div class="col">
      <div class="jumbotron">
        <h1>Bootstrap 4 Cards all same height demo</h1>
        <p class="lead">by djibe.</p>
        <span class="text-muted">(thx to BS4)</span>
        <p>Dependencies : standard BS4</p>
        <p>
          Enjoy the magic of flexboxes and leave the useless card-decks.
        </p>
        <div class="container-fluid">
          <div class="row">
            <div class="col-sm d-flex">
              <div class="card card-body flex-fill">
                A small card content.
              </div>
            </div>
            <div class="col-sm d-flex">
              <div class="card card-body flex-fill">
                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
                in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
              </div>
            </div>
            <div class="col-sm d-flex">
              <div class="card card-body flex-fill">
                Another small card content.
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>


1
এই উত্তর দুর্দান্ত কাজ করে! আপনি যদি সমস্ত ভিউপোর্টে পছন্দসই প্রতিক্রিয়াশীল আচরণ পেতে 'কার্ড-কলাম' বা 'কার্ড-ডেক' ব্যবহার করতে না পারেন।
গেটোসিম্পিচস

এটি আমার পক্ষে কাজ করেছে। আমার একটি বড় কার্ড সহ একটি কলাম রয়েছে এবং ডানদিকে দুটি সারি সহ অন্য কলাম রয়েছে। সুতরাং, বাম কার্ডটি দুটি সংলগ্ন সারিগুলির উচ্চতা নেয়, ধন্যবাদ!
এরিক গার্সিয়া

এই পথ ছিল। আমি চেষ্টা করেছি card-columns তবে এটি প্রতি সারিতে 3 টির বেশি কলাম নিতে পারে না। এই উত্তরের জন্য ধন্যবাদ
ইয়েকু উইলফ্রেড চেতাত

কার্ড-ডেক আমার ক্ষেত্রে কাজ করছিল না, আপনার উত্তরটি কাজটি করেছে!
টিবিজি

31

আপনি ক্লাস প্রয়োগ করতে পারেন h-100, যা উচ্চতা 100% এর জন্য দাঁড়িয়েছে।


12

আপডেট: ইন বুটস্ট্র্যাপ 4 , flexbox এখন ডিফল্ট, এবং প্রতিটি card-deckসারি 3 কার্ড থাকতে হবে। কার্ডগুলি পুরো উচ্চতায় পূর্ণ হবে।

http://www.codeply.com/go/x91w5Cl6ip

বুটস্ট্র্যাপ 4 আলফা card-columnsসিএসএস 3 কলাম ব্যবহার করে যা সত্যিকার অর্থে সমান উচ্চতা সমর্থন করে না (কলাম-ফিলগুলি ব্যতীত যা কেবল ফায়ারফক্সে সমর্থিত)।

আপনি যদি পরিবর্তে বুটস্ট্র্যাপ 4 ফ্লেক্সবক্স মোড সক্ষম করেন তবে আপনি এর পরিবর্তে card-deckউচ্চতা সমান করতে এবং প্রতি 3 টি কলামকে মোড়ানোর জন্য এবং একটি সামান্য CSS ব্যবহার করতে পারেন ।

@media (min-width:34em) {
    .card-deck > .card
    {
        width: 29%;
        flex-wrap: wrap;
        flex: initial; 
    }
}

http://codeply.com/go/YFFFWHVoRB

কর্নেলের একই উচ্চতার সম্পর্কিত
বুটস্ট্র্যাপ কার্ড


আমি আপনার কোডেপিকে কিছু পরীক্ষা করার জন্য কাঁটাছি; একই উচ্চতা হতে আমার প্রসারিত করার জন্য আমার শিরোনামগুলির প্রয়োজন, যা এখানে ঘটে না: কোডপ্লিও / বিগো / এফকিএনকিউজেডজেডজেজি - যেভাবেই আমি আমার "সংক্ষিপ্ত শিরোনাম" এর একই উচ্চতা নিতে পেতে পারি আর শিরোনাম? আমি ফ্লেক্সবক্স এবং গ্রিডগুলির সাথে খেলতে চেষ্টা করেছি তবে ঠিক এটি পাওয়া যায় না বলে মনে হচ্ছে।
ডেভউডহল

11

আমি এটি কীভাবে করেছি তা এখানে:

সিএসএস:

.my-flex-card > div > div.card {
    height: calc(100% - 15px);
    margin-bottom: 15px;
}

এইচটিএমএল:

<div class="row my-flex-card">
    <div class="col-lg-3 col-sm-6">
        <div class="card">
            <div class="card-block">
                aaaa
            </div>
        </div>
    </div>
    <div class="col-lg-3 col-sm-6">
        <div class="card">
            <div class="card-block">
                bbbb
            </div>
        </div>
    </div>
    <div class="col-lg-3 col-sm-6">
        <div class="card">
            <div class="card-block">
                cccc
            </div>
        </div>
    </div>
    <div class="col-lg-3 col-sm-6">
        <div class="card">
            <div class="card-block">
                dddd
            </div>
        </div>
    </div>
</div>


3

আমি কিছুটা ভিন্ন পন্থা নিয়েছিলাম। কার্ড ডেক র‌্যাপার ব্যবহার করা

আমি একটি স্টাইলের নিয়ম যুক্ত করেছি যা কার্ড ব্লকের উচ্চতা সীমাবদ্ধ করে:

.card .card-block {max-height:300px;overflow:auto;}

এটি নিম্নলিখিত ফলাফল দেয়: এখানে চিত্র বর্ণনা লিখুন


3

আপনি কার্ড-ডেক ব্যবহার করতে পারেন, এটি সমস্ত কার্ড সারিবদ্ধ করবে ... এটি বুটস্ট্র্যাপ 4 অফিসিয়াল পৃষ্ঠা থেকে এসেছে।

<div class="card-deck">
  <div class="card">
    <img class="card-img-top" src="..." alt="Card image cap">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
    </div>
  </div>
  <div class="card">
    <img class="card-img-top" src="..." alt="Card image cap">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
    </div>
  </div>
  <div class="card">
    <img class="card-img-top" src="..." alt="Card image cap">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
    </div>
  </div>
</div>

2

আর একটি দরকারী পদ্ধতি হ'ল কার্ড গ্রিড :

<div class="row row-cols-1 row-cols-md-2">
  <div class="col mb-4">
    <div class="card">
      <img src="..." class="card-img-top" alt="...">
      <div class="card-body">
        <h5 class="card-title">Card title</h5>
        <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
      </div>
    </div>
  </div>
  <div class="col mb-4">
    <div class="card">
      <img src="..." class="card-img-top" alt="...">
      <div class="card-body">
        <h5 class="card-title">Card title</h5>
        <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
      </div>
    </div>
  </div>
  <div class="col mb-4">
    <div class="card">
      <img src="..." class="card-img-top" alt="...">
      <div class="card-body">
        <h5 class="card-title">Card title</h5>
        <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content.</p>
      </div>
    </div>
  </div>
  <div class="col mb-4">
    <div class="card">
      <img src="..." class="card-img-top" alt="...">
      <div class="card-body">
        <h5 class="card-title">Card title</h5>
        <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
      </div>
    </div>
  </div>
</div>


1

এটি অর্জনের সর্বাধিক ন্যূনতম উপায় (যা আমি জানি) :

  • .text-monospaceকার্ডের সমস্ত পাঠ্যে প্রয়োগ করুন ।
  • কার্ডগুলিতে সমস্ত পাঠ্যকে একই সংখ্যক অক্ষরে সীমাবদ্ধ করুন।

হালনাগাদ

যোগ .text-truncateকার্ডের শিরোনাম ও বা অন্যান্য ধর্মগ্রন্থে। এটি পাঠ্যকে একক লাইনে বাধ্য করে। কার্ডগুলি তৈরি করতে একই উচ্চতা রয়েছে।


আমি মনে করি আপনি এই উত্তরটি বন্ধ করে দিয়েছেন। একটি কার্যকারী ওয়েব পৃষ্ঠার প্রতিটি কার্ড বা বিভাগে স্পষ্টভাবে বিভিন্ন পরিমাণে পাঠ্য (অক্ষর) থাকবে এবং ফন্ট / টাইপফেসগুলি ব্যবহার করা হবে যা মনোস্পেস নয়। আপনি কেন পাঠ্য সামগ্রীটি ছেঁটে ফেলতে চান যা দর্শনার্থীরা পড়তে পারে না?
কেরি 7777

@ কেরি 777777,, আপনি এটি একটি দীর্ঘ স্ট্রিং ছাঁটাতে এবং এর শেষে একটি "..." যুক্ত করতে পারেন যাতে ব্যবহারকারীদের এটি কেটে ফেলা হয়েছে তা জানান। পুরো স্ট্রিংটি পড়ার জন্য তাদের এটিকে ক্লিক করতে হবে বা হোভার করতে হবে। এইভাবে, আমরা প্রদর্শিত সামগ্রীতে ধারাবাহিকতা তৈরি করতে পারি। কারণ বিষয়বস্তু এক নয়। কিছু সংক্ষিপ্ত, কিছু লম্বা, এবং আমাদের পর্দার স্থান সীমিত।
ডোনকডাভোনা

1
কিছু ক্ষেত্রে, এটি কেবলমাত্র পাঠ্যের দৈর্ঘ্য যা কার্ডগুলি উচ্চতার তুলনায় অসম করে তোলে। সুতরাং এই উত্তর দরকারী।
মোহাম্মদ শরীফ সি

1

আমি এতে একজন শিক্ষানবিস তাই আমি যদি একসাথে কিছু মিস করছি তবে ক্ষমা করুন।

আমি উপরোক্ত অনেক চেষ্টা করেছিলাম। আপনি যদি উচ্চতা = 100% সেট করেন তবে কার্ডটি সর্বদা দীর্ঘতম কার্ডের সর্বকালের দৈর্ঘ্যে প্রসারিত হবে। ধারকটি সমস্ত একই দৈর্ঘ্যে সীমাবদ্ধ করবে।

আমি ধারকটি দেখতে চেয়েছিলাম তাই আমি কী ঘটছে তা দেখতে আমাকে ব্যাকগ্রাউন্ড রঙ ব্যবহার করেছি।

<div class="col-lg-3"  style="background-color: rosybrown;">
    <div class="card w-100" Style="height: 100%">
        <div class="card-body">
            <img src="images/beHappy.png" alt="" class="img-fluid rounded-circle w-25 mb-3">
            <h4>CBe Happy</h2>

0

এটি আমার পক্ষে ভাল কাজ করেছে:

<div class="card card-body " style="height:80% !important">

আমাদের সিএসএস বুটস্ট্র্যাপ সাধারণ জেনারেল সিএসএসের উপর জোর করে।


0

আমি এই সমস্যাটি জুড়ে এসেছি, বেশিরভাগ লোকেরা jQuery ব্যবহার করেন ... এখানে আমার সমাধান ছিল। "কিছু মনে করবেন না, আমি এর মধ্যে কেবল একজন শিক্ষানবিস ..."

.cards-collection {
    .card-item { 
        width: 100%;
        margin: 20px 20px;
        padding:0 ;
        .card {
            border-radius: 10px;
                button {
                    border: inherit;
                }
        }
    }
}
     .container-fluid
         .row.cards-collection.justify-content-center
           .card-item.col-lg-3.col-md-4.col-sm-6.col-11
              .card.h-100

যদি কোনও কার্ড আইটেমের উচ্চতা উদাহরণস্বরূপ 400px হয় (এটির বিষয়বস্তুর উপর ভিত্তি করে), কারণ ফ্লেক্স-সারিবদ্ধ করার জন্য ডিফল্টটি প্রসারিত হয়, তারপরে। কার্ড-আইটেম (সারি বা কার্ড সংগ্রহের শ্রেণীর সন্তান) প্রসারিত হবে। কার্ডের উচ্চতাটি 100% পিতামাতার হতে এই পুরো উচ্চতা দখল করবে।

আমি আশা করি আমি সঠিক ছিলাম। আমি কি?


-3

যদি কেউ আগ্রহী হন তবে এখানে একটি jquery প্লাগইন রয়েছে: jquery.matchHeight.js

https://github.com/liabru/jquery-match-height

ম্যাচহাইট সমস্ত নির্বাচিত উপাদানগুলির উচ্চতাটিকে ঠিক সমান করে তোলে। এটি অনেকগুলি এজ কেস পরিচালনা করে যা অনুরূপ প্লাগইনগুলিকে ব্যর্থ করে তোলে।

এক সারি কার্ডের জন্য, আমি ব্যবহার করি:

<div class="row match-height">

তারপরে সাইটব্যাপী সক্ষম করুন:

$('.row.match-height').each(function() {
   $(this).find('.card').not('.card .card').matchHeight(); // Not .card .card prevents collapsible cards from taking height
});

-12

jsfiddle

সিএসএসের সাহায্যে আপনার উচ্চতাটি কেবল যুক্ত করুন, উদাহরণস্বরূপ:

.card{
    height: 350px;
}

আপনাকে নিজের নিজস্ব সিএসএস যুক্ত করতে হবে।

আপনি যদি ডকুমেন্টেশন পরীক্ষা করেন তবে এটি গাঁথুনির শৈলীর জন্য - এর বিন্দুটি হ'ল এগুলি সমস্ত একই উচ্চতা নয়।


দেখে মনে হচ্ছে যে কার্ডগুলিতে থাকা সামগ্রীগুলি সঠিকভাবে প্রান্তিক নয়। এই সমাধানটি খুব ম্যানুয়াল আমি ভাবছি আরও কিছু "স্মার্ট" আছে কিনা
ব্লুসার্ফার

গতিশীলভাবে উচ্চতা তৈরি করতে আপনি jQuery দিয়ে কিছু চেষ্টা করতে পারেন। আপনি তাদের সাথে কি করতে চান তা নির্ভর করে।
প্ল্যাটিনামজে

উত্তরটি কেন এত নিচে ভোট দেয় তা জানতে খুব কৌতূহলী? কিউজ এটি মনে হয় এটি কাজ করে
বাটসোস্কি

2
এর অর্থ কি এই নয় যে কার্ডটি একটি স্থির উচ্চতা থেকে যায়, কোনও সাড়া জাগানো সমান উচ্চতা নয়?
রবার্ট অ্যান্ড্রুজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.