কীভাবে কেবল বাম এবং ডানদিকে বক্স-ছায়া পাবেন


221

কোনও হ্যাক বা চিত্র নেই কেবল বাম এবং ডানদিকে (অনুভূমিক?) পাশে বক্স-ছায়া পাওয়ার কোনও উপায় way আমি ব্যাবহার করছি:

box-shadow: 0 0 15px 5px rgba(31, 73, 125, 0.8);

তবে এটি চারদিকে ছায়া দেয়।

উপাদানগুলির চারপাশে আমার কোনও সীমানা নেই।

উত্তর:


262

দ্রষ্টব্য: আমি নীচে @ হামিশের উত্তরটি পরীক্ষা করার পরামর্শ দিচ্ছি ; এটি এখানে বর্ণিত সমাধানটিতে অসম্পূর্ণ "মাস্কিং" জড়িত না।


আপনি একাধিক বাক্স-ছায়া দিয়ে কাছে যেতে পারেন; প্রতিটি পক্ষের জন্য একটি

box-shadow: 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 8px -4px rgba(31, 73, 125, 0.8);

http://jsfiddle.net/YJDdp/

সম্পাদন করা

উপরের অংশ এবং নীচের অংশের জন্য আরও 2 টি বাক্স-ছায়া যুক্ত করুন যাতে রক্তক্ষরণ হয় mas

box-shadow: 0 9px 0px 0px white, 0 -9px 0px 0px white, 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 15px -4px rgba(31, 73, 125, 0.8);

http://jsfiddle.net/LE6Lz/


1
ঠিক আছে. ধন্যবাদ। উপরে ও নীচে কিছুটা ছায়া রয়েছে সম্ভবত অস্পষ্টতা / ব্যাসার্ধের কারণে তবে আমার ধারণা এটির সাথেই বাঁচতে হবে।
জাওয়াদ

5
-1: ছায়া কোণে পায় না, তারা কয়েক পিক্সেল আগে শেষ।
ফ্রান্সিসকো মোরালেস

4
আমি বিশ্বাস করতে পারি না যে এই সমাধানটি এত বেশি রেটেড। এটি বস্তুকে উপরের এবং নীচের দিকে প্রসারিত করে (কঠিন ছায়া প্রয়োগ করে) সুতরাং এটি কেবল তখনই কার্যকর যখন ডিভ একটি অভিন্ন পটভূমিতে থাকে এবং এর উপরে এবং নীচে স্থান থাকতে পারে। অত্যন্ত সীমাবদ্ধ এবং প্রকৃতপক্ষে প্রসঙ্গ সমাধানের সাথে আবদ্ধ। হামিশের সমাধানটি সর্বোত্তম এবং সরল।
এজাজ

এর চেয়ে আরও ভাল সমাধান (2020) রয়েছে। লুকের উত্তর নীচে দেখুন: stackoverflow.com/a/62367058/760777
আরডাব্লুসি

171

আমি ডিফোরের সমাধানটিতে উপস্থিত ছায়া গোছানো উপরে এবং নীচে সন্তুষ্ট ছিল না তাই আমার নিজের তৈরি হয়েছিল।

এখানে ডেমো দেখুন

ইনসেট box-shadow;উপরের এবং নীচের অংশটি কাটা দিয়ে একটি দুর্দান্ত অভিন্ন ছায়া তৈরি করে:

box-shadow: -15px 0 15px -15px inset;

আপনার উপাদানের পক্ষের এই মর্মে ব্যবহার করার জন্য, দুই ছদ্ম উপাদানের তৈরি :beforeএবং :afterমূল উপাদান পক্ষের একেবারে স্থান।

div {
 position: relative; 
}
div:before {
  box-shadow: -15px 0 15px -15px inset;
  content: " ";
  height: 100%;
  left: -15px;
  position: absolute;
  top: 0;
  width: 15px;
}

etc...

9
খুব চালাক. আপনার :afterপ্রয়োজনগুলিও নোট করুন top: 0
স্প্রিন্টস্টার

1
display: inline-blockআপনার উদাহরণটি কাজ করার জন্য আমাকে সিউডো ক্লাসে যুক্ত করতে হয়েছিল। সব মিলিয়ে: দুর্দান্ত সমাধান। +1
মরফিয়াস

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

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

1
@ হামিশ হ্যাঁ, আমি এখনই এটি করেছি :-) করুণা, এই পদ্ধতির একটি আকর্ষণীয় বৈশিষ্ট্যটি হ'ল এটি (সাধারণত) notকোনও সহায়তাকারী <div>উপাদানকেই পুনরুদ্ধার করে। :-)
ফ্রিরিচ রাবাব


25

ধ্রুপদী পদ্ধতি: নেতিবাচক প্রসার

সিএসএস বক্স-শ্যাডো 4 টি প্যারামিটার ব্যবহার করে: এইচ-শ্যাডো, ভি-শ্যাডো, ব্লার, স্প্রেড:

box-shadow: 10px 0 8px -8px black;

ভি-ছায়া (উলম্ব ছায়া) 0 সেট করা হয়।

দাগ প্যারামিটার গ্রেডিয়েন্ট প্রভাব যোগ করেন, কিন্তু এছাড়াও উল্লম্ব সীমানা (এক আমরা পরিত্রাণ পেতে চান) উপর একটু ছায়া যোগ করে।

নেতিবাচক স্প্রেড সমস্ত সীমানায় ছায়া হ্রাস করে: আপনি একপাশের ওএনএনকে খুব বেশি প্রভাবিত না করে সেই সামান্য উল্লম্ব ছায়া সরিয়ে দেওয়ার চেষ্টা করে খেলতে পারেন (এটি ছোট ছায়ার পক্ষে সহজ, 5 থেকে 10px।)

এখানে একটি মূর্খ উদাহরণ।


দ্বিতীয় পদ্ধতির: পাশে সম্পূর্ণ ডিভ

আপনার উপাদানটিতে একটি খালি ডিভ যুক্ত করুন এবং এটিকে নিখুঁত অবস্থানের সাথে স্টাইল করুন যাতে এটি উপাদান সামগ্রীতে প্রভাব ফেলবে না।

বাম-ছায়ার উদাহরণ সহ এখানে ঝাঁকুনি

<div id="container">
  <div class="shadow"></div>
</div>

.shadow{
    position:absolute;
    height: 100%;
    width: 4px;
    left:0px;
    top:0px;
    box-shadow: -4px 0 3px black;
}

তৃতীয়: মুখোশ ছায়া

যদি আপনার একটি স্থির পটভূমি থাকে তবে আপনি দুটি মুখোশ ছায়ার সাথে পটভূমির একই রঙ ধারণ করে এবং ঝাপসা = 0 দিয়ে পার্শ্ব-ছায়া প্রভাবটি আড়াল করতে পারেন, উদাহরণস্বরূপ:

box-shadow: 
    0 -6px white,          // Top Masking Shadow
    0 6px white,           // Bottom Masking Shadow
    7px 0 4px -3px black,  // Left-shadow
    -7px 0 4px -3px black; // Right-shadow

আমি আবার কালো ছায়ায় একটি নেতিবাচক স্প্রেড (-3px) যুক্ত করেছি, সুতরাং এটি কোণার বাইরে প্রসারিত হয় না।

এখানে ঝাঁকুনি


4

এটি সমস্ত ব্রাউজারের জন্য দুর্দান্ত কাজ করে:

-webkit-box-shadow: -7px 0px 10px 0px #000, 7px 0px 10px 0px #000;
-moz-box-shadow: -7px 0px 10px 0px #000, 7px 0px 10px 0px #000;
box-shadow: -7px 0px 10px 0px #000, 7px 0px 10px 0px #000;

3
এটি এমনকি একটি সামান্য বিট কাজ করে না। হতে পারে ফর্ম্যাটটি পরিবর্তিত হয়েছে তবে এটি ছায়াটি 7 পিক্সেল বামে, 0 পিক্সেল নীচে সরিয়ে নিয়েছে, বহিরাগত 10 পিক্সেল অস্পষ্ট করে এবং অস্পষ্ট 0 পিক্সেল প্রসারিত করবে। এটি ভেঙে: বামদিকে 17 পিক্সেল অস্পষ্টতা, উপরে এবং নীচে একটি 10 ​​পিক্সেল অস্পষ্ট এবং ডানদিকে একটি 3 পিক্সেল অস্পষ্ট। যা আমি পাই তা।
জন কেটজিক

4

ডেমো

আপনি একাধিক ব্যবহার করতে হবে box-shadow;। ইনসেট সম্পত্তি এটিকে সুন্দর এবং অভ্যন্তর দেখায়

div {
    box-shadow: inset 0 12px  15px -4px rgba(31, 73, 125, 0.8), inset 0 -12px  8px -4px rgba(31, 73, 125, 0.8);
    width: 100px;
    height: 100px;
    margin: 50px;
    background: white;
}


2

clip-pathউপাদানগুলির নির্দিষ্ট দিকগুলিতে বক্স-ছায়া অর্জন করার জন্য আমি এখন (2020) সবচেয়ে ভাল উপায় খুঁজে পেয়েছি, বিশেষত যখন প্রয়োজনীয় প্রভাবটি নির্দিষ্ট প্রান্তগুলিতে "ক্লিন কাট" ছায়া থাকে তবে :

.shadow-element {
    width: 100px;
    height: 100px;
    background-color: #FFC300;
    box-shadow: 0 0 10px 5px rgba(0,0,0,0.75);
    clip-path: inset(0px -15px 0px -15px);

    /* position and left properties required to bring element out from edge of parent
    so that shadow can be seen; margin-left would also achieve the same thing */
    position: relative;
    left: 15px;
}
<div class="shadow-element"></div>

... এর মতো ক্ষীণ / হ্রাস / পাতলা ছায়ার বিপরীতে:

.shadow-element {
    width: 100px;
    height: 100px;
    background-color: #FFC300;
    box-shadow: 15px 0 15px -10px rgba(0,0,0,0.75), -15px 0 15px -10px rgba(0,0,0,0.75);

    /* position and left properties required to bring element out from edge of parent
    so that shadow can be seen; margin-left would also achieve the same thing */
    position: relative;
    left: 15px;
}
<div class="shadow-element"></div>


প্রশ্নযুক্ত উপাদানটিতে কেবল নিম্নলিখিত সিএসএস প্রয়োগ করুন:

box-shadow: 0 0 Xpx Ypx [hex/rgba]; /* note 0 offset values */
clip-path: inset(Apx Bpx Cpx Dpx);

কোথায়:

  • Apx শীর্ষ প্রান্তের জন্য ছায়া দৃশ্যমানতা সেট করে
  • Bpx অধিকার
  • Cpx পাদ
  • Dpx বাম

যে ছায়াটি লুকানো উচিত সেখানে কোনও প্রান্তের জন্য 0 এর মান লিখুন এবং ছায়াটি প্রদর্শিত হওয়া উচিত এমন কোনও প্রান্তে নেতিবাচক মান (ঝাপসা ব্যাসার্ধ + স্প্রেডের সম্মিলিত ফলাফলের সমান - Xpx + Ypx) Enter


1
এটি সেরা উত্তর। এটা এমনকি সহজ। আপনি কেবল আপনার চিত্রটিতে ছায়াটি প্রয়োগ করতে পারেন। একটি যাদুমন্ত্র মত কাজ করে. উদাহরণ: img.s छायाযুক্ত {বক্স-ছায়া: 0 0 15px rgba (0,0,0,0.75); ক্লিপ-পাথ: ইনসেট (0px -15px 0px -15px); }
আরডাব্লুসি

এমনকি আপনার উদাহরণে আপনি ছায়ার উপরের এবং নীচের কোণগুলিকে বাঁকানো দেখতে পাচ্ছেন Still তবুও কিছু ব্যবহারের ক্ষেত্রে এটি ভাল।
হামিশ

@ হামিশ, আপনি কি clip-pathউদাহরণটি দেখছেন ? 2 টি কোড স্নিপেট রয়েছে। প্রথমটি ব্যবহার করে clip-pathএবং "শীর্ষে এবং নীচের কোণগুলিকে কার্ভিং ইন" না করে সম্পূর্ণ পরিষ্কার কাটা হয়েছে - এটি আপনার সমাধানের মতো (তবে অনেক কম সিএসএস প্রয়োজন)। দ্বিতীয় কোড-স্নিপেট কেবল তুলনার জন্য একটি উদাহরণ - অনেকগুলি সমাধান বিচ্ছুরিত বাক্স-ছায়ায় তৈরি করে যা প্রায়শই লোকেরা অর্জন করতে চায় না।
লুক

আপনি যদি আরও শক্তিশালী ছায়া চাইছেন তবে আপনি box-shadowসম্পত্তিটিকে এমন কোনও কিছুর সাথে সহজেই পরিবর্তন করতে পারেন 0 0 10px 5px rgba(0,0,0,0.75);। যোগ করা spreadমান এবং হ্রাস নোট করুন blur-radius
লুক

@ হামিশ আমি প্রদর্শনের জন্য আমার প্রথম স্নিপেট আপডেট করেছি।
লুক


0

ডাইভস, ইমেজ বা অভ্যন্তরীণ বিষয়বস্তুগুলির জন্য বাম এবং ডান দিকের উপরের নিখরচায় ছায়া

চিত্রগুলির ডান এবং বাম দিকে কোনও দুর্দান্ত ইনসেট ছায়া বা অন্য কোনও সামগ্রীর জন্য, এটিকে এভাবে ব্যবহার করুন

*** জেড-ইনডেক্স: -1 কীটগুলি সহ চিত্র বা অভ্যন্তরীণ বস্তুগুলি দেখানোর সময় একটি দুর্দান্ত কৌশল করে

<html>
<div class="shadowcontainer">
<img src="https://www.google.es/images/srpr/logo11w.png" class="innercontent" style="with:100%"/>
</div>

<style>

.shadowcontainer{
display:inline-flex;
box-shadow: inset -40px 0px 30px -30px rgba(0,0,0,0.9),inset 40px 0px 30px -30px rgba(0,0,0,0.9);
}

.innercontent{
z-index:-1
}
</style>
</html>

0

কিছু পরিস্থিতিতে আপনি অন্য ধারক দ্বারা ছায়া গোপন করতে পারেন। উদাহরণস্বরূপ, যদি ছায়ার সাথে ডিআইভির উপরে এবং নীচে কোনও ডিআইভি থাকে তবে আপনি position: relative; z-index: 1;আশেপাশের ডিআইভি ব্যবহার করতে পারেন ।


0

শুধুমাত্র অনুভূমিকের জন্য, আপনি বাক্স-ছায়াটিকে তার পিতামাতার ডিভের ওভারফ্লো ব্যবহার করে কৌতুক করতে পারেন:

<div class="parent">
  <div class="box-shadow">content</div>
</div>

.parent{
  overflow:hidden;
}
.box-shadow{
  box-shadow: box-shadow: 0 5px 5px 0 #000;
}

0

অন্য ধারণাটি ছায়াকে নকল করার জন্য স্বচ্ছতার সাথে শেষ পর্যন্ত একটি গা dark় অস্পষ্ট ছদ্ম উপাদান তৈরি করতে পারে। এটি সামান্য কম উচ্চতা এবং আরও প্রস্থ ig দিয়ে তৈরি করুন


0

ছায়াটি "মুছতে" আপনি তার ভিতরে 1 ডিভ ব্যবহার করতে পারেন:

.yourdiv{
    position:relative;
    width:400px;
    height:400px;
    left:10px;
    top:40px;
    background-color:white;
    box-shadow: 0px 0px 1px 0.5px #5F5F5F;

}
.erase{
    position:absolute;
    width:100%;
    top:50%;
    height:105%;
    transform:translate(0%,-50%);
    background-color:white;
}

আপনি "উচ্চতা:%;" দিয়ে খেলতে পারেন এবং "প্রস্থ:%;" আপনি কি ছায়া চান মুছতে।


0

যে কারণেই এখানে সরবরাহিত উত্তরগুলি আমার ক্ষেত্রে কাজ করবে না। সুতরাং, আমি সৃজনশীল পেয়েছিলাম। এখানে আপনি যে সব ব্যবহারের জন্য একটি নতুন সমাধান linear-gradient()স্থানে box-shadow

p {
  padding: 1rem;
  background-color: #b55;
  color: white;
  background-image: linear-gradient(90deg, rgba(0,0,0,0.5), rgba(0,0,0,0) .5rem, rgba(0,0,0,0), rgba(0,0,0,0.0) calc(100% - .5rem), rgba(0,0,0,0.5));
}
<p>Testing</p>

যদিও আমি এই বিষয়ে তর্ক করতে চাইছি না, এটি সত্যই আপনি (আমরা) গঠনের চেষ্টা করছেন এমন একটি "বাক্স" নয়, তাই আমি মনে করি এটি বলা যেতে পারে যে এটি box-shadowশুরু করার অর্থ হয়নি।


0

আমি ডান দিকের বুটস্ট্র্যাপের ছায়া-স্মিকে অনুলিপি করার চেষ্টা করেছি, আমার কোডটি এখানে:

.shadow-rs{
    box-shadow: 5px 0 5px -4px rgba(237, 241, 235, 0.8);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.