এসসিএসএসে আরও একটি ক্লাস সহ


309

আমার এসসিএসএস ফাইলটিতে এটি রয়েছে:

.class-a{
  display: inline-block;
  //some other properties
  &:hover{
   color: darken(#FFFFFF, 10%);
 }  
}

.class-b{

 //Inherite class-a here

 //some properties
}

ক্লাস-বিতে, আমি সমস্ত সম্পত্তি এবং নেস্টেড ঘোষণাগুলি উত্তরাধিকারসূত্রে পেতে চাই class-a। এটি কিভাবে হয়? আমি ব্যবহার করার চেষ্টা করেছি @include class-a, তবে এটি সংকলনের সময় কেবল একটি ত্রুটি ছুঁড়েছে।

উত্তর:


622

এই জাতীয় কোনও সহজ মামলার জন্য দেখে মনে হচ্ছে @mixinএবং এটির @includeপ্রয়োজন নেই।

একজন কেবল এটি করতে পারেন:

.myclass {
  font-weight: bold;
  font-size: 90px;
}

.myotherclass {
  @extend .myclass;
  color: #000000;
}

40
@ এক্সটেন্ড ভাল কাজ করে, তবে ক্লাসগুলির কোনওটি যদি নির্দেশের (সাধারণত একটি মিডিয়া ক্যোয়ারী) এর মধ্যে থাকে তবে কাজ করবে না; যদি না তারা উভয়ই একই নির্দেশে থাকে।
মার্টিনএন্স্টি

13
সম্পর্কে কিছু মজাদার তথ্যের জন্য এখানে দেখুন @extend- আপনার সম্পর্কে সচেতন হওয়া উচিত এমন কিছু কৌশলগত পার্শ্ব প্রতিক্রিয়া: stackoverflow.com/questions/30744625/…
টনি লেই

2
আপনাকে ধন্যবাদ @ টনিলিহ, প্লেসহোল্ডারগুলি আকর্ষণীয় কারণ তারা যদি প্যারেন্ট সিলেক্টরকে কেবল প্রসারিত করতে (কোথাও ব্যবহৃত হয় না) ব্যবহার করা হয় তবে তারা একটি অতিরিক্ত সিএসএস নির্বাচককে জেনারেশন বন্ধ করে দেয় । উপরের উদাহরণের মতো .myclassঅন্য কোথাও ব্যবহার করা হয়নি (আমি মনে করি) এর পরিবর্তে অন্য কোথাও ব্যবহার করা হয় না .myotherclass, তবে এটি .myclassহিসাবে সংজ্ঞায়িত %myclassএবং প্রসারিত .myotherclassকরা আরও ভাল @extend %myclass;। এটি তৈরি করবে.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
অভিজিৎ


@ মার্টিন অ্যানস্টি ভাল, যে সফল হয়।
আব্রাম

51

এটা চেষ্টা কর:

  1. সাধারণ বৈশিষ্ট্য সহ একটি স্থানধারক বেস শ্রেণি (% বেস-শ্রেণি) তৈরি করুন
  2. এই স্থানধারক সহ আপনার শ্রেণি (.my-বেস-শ্রেণি) প্রসারিত করুন।
  3. এখন আপনি আপনার যে কোনও শ্রেণিতে% বেস-শ্রেণি প্রসারিত করতে পারেন (যেমন। আমার-শ্রেণি)।

    %base-class {
       width: 80%;
       margin-left: 10%;
       margin-right: 10%;
    }
    
    .my-base-class {
        @extend %base-class;
    }
    
    .my-class {
        @extend %base-class;
        margin-bottom: 40px;
    }
    

আমি মনে করি এই উত্তরটি সর্বাধিক জনপ্রিয় হিসাবে একই। আমি কি সঠিক?
ইয়েভেগেনি আফানসিয়েভ

1
@ ইয়েজেগেনি আফানসিয়েভ না, আপনি সরাসরি কোনও শ্রেণি বাড়ান না, তবে আপনি সরাসরি কোনও স্থানধারককে প্রসারিত করতে পারেন।
আশ্বিন

এটি কখনই জিজ্ঞাসা করা হয়নি :(
ইয়েভেগেনি আফানসিয়েভ

1
@ ইয়াভেগেনি আফানসিয়েভ সরাসরি ক্লাস প্রসারিত (সর্বাধিক জনপ্রিয় উত্তর) আমার পক্ষে কাজ করেনি, তবে স্থানধারককে বাড়ানো কাজটি করেছে। সুতরাং আমি উত্তর পোস্ট করেছি কারণ এটি একই উত্তর নয়।
আশ্বিন

3
বিকল্প উত্তর পোস্ট করার জন্য আপনাকে ধন্যবাদ, তবে কেন আমাদের এটি দরকার তা আপনার উত্তর থেকে পরিষ্কার নয়। আপনি যদি দয়া করে কোনও ব্যবহারের ক্ষেত্রে বা এই পদ্ধতির সুবিধার বিষয়ে আরও যুক্তি যুক্ত করতে পারেন তবে এটি প্রশংসা হবে। ধন্যবাদ.
ইয়েভেগেনি আফানসিয়েভ

16

@ এক্সটেন্ড ব্যবহার করা একটি সূক্ষ্ম সমাধান, তবে সচেতন থাকুন যে সংকলিত সিএসএস ক্লাস সংজ্ঞাটি ভেঙে দেবে। যে কোনও শ্রেণি যা একই স্থানধারককে প্রসারিত করে তাদের একত্রে গোষ্ঠীভুক্ত করা হবে এবং শ্রেণিতে প্রসারিত না হওয়া নিয়মগুলি পৃথক সংজ্ঞাতে থাকবে। যদি বেশ কয়েকটি শ্রেণি প্রসারিত হয়ে যায় তবে সংকলিত সিএসএস বা ডেভ সরঞ্জামগুলিতে কোনও নির্বাচককে অনুসন্ধান করা অবাস্তব হয়ে উঠতে পারে। যেখানে একটি মিশিন মিক্সিন কোডটি নকল করবে এবং কোনও অতিরিক্ত শৈলী যুক্ত করবে।

আপনি এই sassmeister এ @ এক্সেট এবং @ মিক্সিনের মধ্যে পার্থক্য দেখতে পাবেন


সাসমিস্টার লিঙ্কটি নষ্ট হয়ে গেছে।
LexieHankins

11
@extend .myclass;
@extend #{'.my-class'};

22
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
আদিগা

2
@extend #{'.my-class', '.my-other-class'};
ইয়ারোয়ো

2
এখানে হ্যাশবাং এর অর্থ কী?
কনরাড ভিল্টারস্টন

7

অন্য বিকল্পটি কোনও অ্যাট্রিবিউট নির্বাচনকারী ব্যবহার করে:

[class^="your-class-name"]{
  //your style here
}

যেখানে "আপনার শ্রেণীর নাম" দিয়ে শুরু হওয়া প্রতিটি শ্রেণি এই শৈলীটি ব্যবহার করে।

সুতরাং আপনার ক্ষেত্রে, আপনি এটি এর মতো করতে পারেন:

[class^="class"]{
  display: inline-block;
  //some other properties
  &:hover{
   color: darken(#FFFFFF, 10%);
 }  
}

.class-b{
  //specifically for class b
  width: 100px;
  &:hover{
     color: darken(#FFFFFF, 20%);
  }
}

ডাব্লু 3 স্কুলগুলিতে অ্যাট্রিবিউট নির্বাচনকারীদের সম্পর্কে আরও

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