মূল ধারকটির 100% প্রস্থে একটি স্থির ডিভ সেট করুন


83

আমার কিছু প্যাডিংয়ের সাথে একটি মোড়ক রয়েছে, তারপরে আমার একটি শতাংশের প্রস্থ (40%) সহ একটি ভাসমান আপেক্ষিক ডিভ রয়েছে।

ভাসমান আপেক্ষিক ডিভের ভিতরে আমার একটি স্থির ডিভ থাকে যা আমি এর পিতামাতার মতো একই আকার চাই। আমি বুঝতে পারি যে একটি নির্দিষ্ট ডিভটি নথির প্রবাহ থেকে সরানো হয়েছে এবং যেমন মোড়কের প্যাডিং উপেক্ষা করছে।

এইচটিএমএল

<div id="wrapper">
  <div id="wrap">
    Some relative item placed item
    <div id="fixed"></div>
  </div>
</div>

সিএসএস

body { 
  height: 20000px 
}  
#wrapper {
  padding: 10%;
}  
#wrap { 
  float: left;
  position: relative;
  width: 40%; 
  background: #ccc; 
} 
#fixed { 
  position: fixed;
  width: inherit;
  padding: 0px;
  height: 10px;
  background-color: #333;
}

এখানে বাধ্যতামূলক ফিজল: http://jsfiddle.net/C93mk/489/

কেউ কি এটি সম্পাদন করার উপায় জানেন?

আমি কী সম্পাদন করতে চাইছি তার আরও বিশদ প্রদর্শন করার জন্য আমি এই ফিডলটি সংশোধন করেছি, বিভ্রান্তির জন্য দুঃখিত: http://jsfiddle.net/EVYRE/4/

উত্তর:


41

আপনি .আরবারের জন্য প্যাডিংয়ের পরিবর্তে। মোড়ক পাত্রে জন্য মার্জিন ব্যবহার করতে পারেন:

body{ height:20000px }
#wrapper { padding: 0%; }
#wrap{ 
    float: left;
    position: relative;
    margin: 10%;
    width: 40%; 
    background:#ccc; 
}
#fixed{ 
    position:fixed;
    width:inherit;
    padding:0px; 
    height:10px;
    background-color:#333;    
}

jsfiddle


আমি যা করছি তা আরও ভালভাবে ব্যাখ্যা করার জন্য আমার ফিডল আপডেট করেছে: jsfiddle.net/EVYRE/4
জ্যাক

@JackMurdoch একমাত্র উপায় আমি JS ছাড়া এটি ব্যবহার হয় calcজন্য rightএবং leftবৈশিষ্ট্য। এ jsfiddle
YD1m

মোড়কটি সর্বোচ্চ-প্রস্থের (উদাহরণস্বরূপ 600০০px) নীচে সঙ্কুচিত হয়ে গেলে এটি কাজ করবে না, তবে আমি বিশ্বাস করি আপনি ঠিক বলেছেন এটি জাভাস্ক্রিপ্টের বাইরে করা যাবে না। সাহায্যের জন্য ধন্যবাদ.
জ্যাক মারডোক

4
এটি সত্যিই কাজ করে না, এই ঝাঁকুনিটি দেখুন jsfiddle.net/EVYRE/4 । # পার্শ্বদণ্ডের প্রস্থটি তার পিতামাতার সাথে সম্পর্কিত হতে পারে (# পাশের বার_আর্যাপ) তবে এটি নয় এবং এটি তার পিতামাতাকে উপচে ফেলেছে।
mlb

আমি মনে করি এটি কেবলমাত্র কার্যকর কারণ স্থির উপাদান এবং উইন্ডোর মধ্যে একটি ডিভ রয়েছে। উইন্ডো প্রস্থের 100% নয় এমন উপাদানগুলিতে স্থির উপাদানটি অনেক সময় নেস্ট করা থাকলে এটি কাজ করবে না
জে

3

কেমন হয় এই ?

$( document ).ready(function() {
    $('#fixed').width($('#wrap').width());
});

Jquery ব্যবহার করে আপনি যে কোনও প্রস্থের সেট করতে পারেন :)

সম্পাদনা: মতামতগুলিতে স্বপ্ন দ্বারা বলা হয়েছে, কেবল এই প্রভাবের জন্য জিকুয়ারি ব্যবহার করা অর্থহীন এবং এমনকি পাল্টা উত্পাদনশীল। আমি এই পৃষ্ঠাগুলিতে অন্যান্য জিনিসগুলির জন্য JQuery ব্যবহার করি এবং এই অংশটির জন্য এটি ব্যবহার করার বিষয়টি বিবেচনা করি for আমার উত্তরটির কারণে যে কোনও অসুবিধার জন্য আমি ক্ষমাপ্রার্থী।


"ভাসমান আপেক্ষিক ডিভের ভিতরে আমার একটি স্থির ডিভ থাকে যা আমি তার পিতামাতার মতোই আকার চাই" - "# র্যাপ" এর ভিতরে তার '# ফিক্সড' রয়েছে যা তিনি পছন্দ করেন '# র্যাপ' ডিভের মতো একই আকারের (উচ্চতা ইতিমধ্যে সেট করা আছে তাই আমি এটি পরিবর্তন করিনি)। দয়া করে আমাকে ব্যাখ্যা করুন এর কোন অংশ আমি পাইনি? এবং ফলাফলের কোন অংশটি অন্যান্য উত্তরগুলির চেয়ে পৃথক?
হিস্টো ভালকানভ

4
আরে বন্ধু, কোন অপরাধ নেই। আসলে প্রশ্নটি সিএসএসে একটি উত্তর সরবরাহ করা ছিল, যার জন্য আপনি jQuery প্রবর্তন করেছিলেন, যা উত্তরের চেয়ে পরামর্শ দেওয়া উচিত ছিল।
ড্রিমওয়েভার

আমি জানি আমি এমনকি মার্জিনগুলির সাথে অন্যান্য সমাধানটিকেও উজ্জীবিত করেছি, তবে কেন আমি জেকারি সমাধানটি কেউ রাখতে পারি না তা দেখছি না। ভাবুন এখন থেকে 5--? মাস পরে যদি কেউ গুগলের মাধ্যমে এই প্রশ্নটি খুঁজে পায় এবং তার মামলার জন্য jquery সমাধানটিকে আরও উপযুক্ত মনে করে?
হিস্টো ভালকানভ

4
আমি সম্মত হই যে আপনার সমাধান jquery সুযোগের ক্ষেত্রে নিখুঁত তবে সিএসএস-তে নয় plain যখন আমি জ্যাকুইরি লাইব ব্যবহার করছেন না, আপনি কি আমার কাছে যেমনটি পোস্ট করেছেন ঠিক তেমন জেকুরিতে একটি সহজ সমাধান পেয়েছি বলে আপনি এটি ব্যবহার করবেন বলে আশা করছেন J জ্যাকুরি লাইব ফাইলটি 32 কেবি জিপড / 91.6 কেবি (উত্পাদন মোড) / 252 কেবি ( বিকাশ মোড) .এটির জন্য যদি জকিউরি লাইব ব্যবহার করা সত্যিকারভাবে সম্ভব হয় না, যদি এটির মূল্য না হয়। সাইটে পারফরম্যান্সের বিচারে jQuery বা মূল পয়েন্টের একটি সম্ভাব্য অসুবিধা
ড্রিমওয়েভার

4
যদি আপনি উইন্ডোটির আকার পরিবর্তন করেন তবে এটি ব্রেক হবে। এখন আপনাকে অনারাইজ গণনা করতে হবে, শীতল, ব্যয়বহুল মনে হচ্ছে। nty
জে

3

পিতামাতার একটি রূপান্তর যুক্ত করার চেষ্টা করুন (কিছুই করার দরকার নেই, একটি শূন্য অনুবাদ হতে পারে) এবং স্থির সন্তানের প্রস্থটি 100% এ সেট করুন

body{ height:20000px }
#wrapper {padding:10%;}
#wrap{ 
    float: left;
    position: relative;
    width: 40%; 
    background:#ccc; 
    transform: translate(0, 0);
}
#fixed{ 
    position:fixed;
    width:100%;
    padding:0px;
    height:10px;
    background-color:#333;
}
<div id="wrapper">
    <div id="wrap">
    Some relative item placed item
    <div id="fixed"></div>
    </div>
</div>


1

আপনি পিতামাতার ডিভের ভিত্তিতে পাদচরণ পিন করতে পরম অবস্থান ব্যবহার করতে পারেন। আমি মোড়কে 10px প্যাডিং-নীচেও যুক্ত করেছি (ফুটারের উচ্চতার সাথে মেলে)। নিরঙ্কুশ অবস্থানটি প্রবাহের বাইরের পরিবর্তে পিতামহ বিভাজনের সাথে আপেক্ষিক যেহেতু আপনি ইতিমধ্যে অবস্থানটিকে আপেক্ষিক বৈশিষ্ট্যটি দিয়েছেন।

body{ height:20000px }
#wrapper {padding:10%;}
#wrap{ 
    float: left;
    padding-bottom: 10px;
    position: relative;
    width: 40%; 
    background:#ccc; 
}
#fixed{ 
    position:absolute;
    width:100%;
    left: 0;
    bottom: 0;
    padding:0px;
    height:10px;
    background-color:#333;

}

http://jsfiddle.net/C93mk/497/


আমি প্রথমে এটি চেষ্টা করেছি তবে সমস্যাটি হ'ল আপনি যখন স্ক্রোল করবেন তখন এটি বাকী
ডিভগুলির

1

ম্যান আপনার কনটেইনার প্যারেন্ট উপাদানগুলির প্রস্থের 40%

তবে আপনি যখন অবস্থান ব্যবহার করেন: স্থির, প্রস্থটি ভিউপোর্ট (নথি) প্রস্থের উপর ভিত্তি করে ...

ভাবতে ভাবতে, আমি বুঝতে পারি যে আপনার প্যারেন্ট উপাদানটির 10% প্যাডিং রয়েছে (বাম এবং ডান), এর অর্থ আপনার উপাদানটির মোট পৃষ্ঠার প্রস্থের 80% have সুতরাং আপনার স্থির উপাদানটির মোট প্রস্থের 80% এর উপর ভিত্তি করে 40% থাকতে হবে

সুতরাং আপনাকে কেবল আপনার # ফিক্সড ক্লাসে পরিবর্তন করতে হবে

#fixed{ 
    position:fixed;
    width: calc(80% * 0.4);
    height:10px;
    background-color:#333;
}

আপনি যদি সাস, পোস্টসিএসএস বা অন্য কোনও সিএসএস সংকলক ব্যবহার করেন তবে আপনি যখন প্যারেন্ট এলিমেন্টের প্যাডিং মান পরিবর্তন করেন তখন লেআউটটি ভাঙ্গা এড়াতে আপনি ভেরিয়েবল ব্যবহার করতে পারেন।

এখানে আপডেট করা ফিজল http://jsfiddle.net/C93mk/2343/

আমি আশা করি এটি সাহায্য করে


0

আপনার সর্বশেষতম jsfiddle শীর্ষে , আপনি কেবল একটি জিনিস মিস করেছেন:

#sidebar_wrap {
  width:40%;
  height:200px;
  background:green;
  float:right;
}
#sidebar {
  width:inherit;
  margin-top:10px;
  background-color:limegreen;
  position:fixed;
  max-width: 240px; /*This is you missed*/
}

তবে, কীভাবে এটি আপনার সমস্যার সমাধান করবে? সহজ, প্রথমে প্রত্যাশার চেয়ে বড় কেন তা ব্যাখ্যা করুন।

স্থির উপাদান #sidebarউইন্ডো প্রস্থের আকারকে তার নিজস্ব আকার পেতে বেস হিসাবে প্রতিটি অন্যান্য নির্দিষ্ট উপাদানগুলির মতো ব্যবহার করবে, একবার এই উপাদানটির সংজ্ঞা দেওয়া হয়েছে width:inheritএবং #sidebar_wrapপ্রস্থের মান হিসাবে 40% রয়েছে, তারপরে গণনা করা হবেwindow.width * 40% , আপনার উইন্ডো প্রস্থটি যদি আপনার চেয়ে বড় হয় .containerপ্রস্থ, এর #sidebarচেয়ে বড় হবে #sidebar_wrap

এই উপায়, আপনার নিজের একটি সর্বোচ্চ প্রস্থ সেট করতে হবে #sidebar_wrap চেয়ে বড় হওয়া থেকে রোধ করার জন্য#sidebar_wrap

এই jsfiddle দেখুন যা একটি কার্যকরী কোড দেখায় এবং এটি কীভাবে কাজ করে তা আরও ভাল ব্যাখ্যা করুন।


-3

সরান Padding: 10%;বা ব্যবহার px আকারে পরিবর্তে শতাংশ জন্য.wrap

উদাহরণটি দেখুন: http://jsfiddle.net/C93mk/493/

এইচটিএমএল:

<div id="wrapper">
    <div id="wrap">
    Some relative item placed item
    <div id="fixed"></div>
    </div>
</div>

সিএসএস:

body{ height:20000px }
#wrapper {padding:10%;}
#wrap{ 
    float: left;
    position: relative;
    width: 200px; 
    background:#ccc; 
}
#fixed{ 
    position:fixed;
    width:inherit;
    padding:0px;
    height:10px;
    background-color:#333;

}

# র‌্যাপে তার শতাংশের জন্য প্রস্থের দরকার। তবে আপনি একটি স্থির রেখেছেন।
অচিন্থ সামিন্দিকা

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