আমারও একি দশা. তবে আমি আমার উপাদানগুলি অবস্থান করতে ডি 3 ব্যবহার করছিলাম এবং সিএসএস দ্বারা রুপান্তর ও রূপান্তরটি পরিচালনা করতে চেয়েছিলাম wanted এটি আমার আসল কোড যা আমি ক্রোমে working৫ তে কাজ করেছি:
//...
this.layerGroups.selectAll('.dot')
.data(data)
.enter()
.append('circle')
.attr('transform-origin', (d,i)=> `${valueScale(d.value) * Math.sin( sliceSize * i)}
${valueScale(d.value) * Math.cos( sliceSize * i + Math.PI)}`)
//... etc (set the cx, cy and r below) ...
এটি আমার সেট করার মঞ্জুরি দেওয়া cx
, cy
এবং transform-origin
একই ডেটা ব্যবহার জাভাস্ক্রিপ্ট মান।
তবে এটি ফায়ারফক্সে কাজ করে না! আমি কি কি ছিল মোড়ানো ছিল circle
মধ্যে g
ট্যাগ এবং translate
উপরে থেকে একই পজিশনিং সূত্র ব্যবহার করে। আমি তখন যোগ করা circle
মধ্যে g
ট্যাগ, এবং সেট তার cx
এবংcy
মান 0
। সেখান transform: scale(2)
থেকে প্রত্যাশা অনুযায়ী কেন্দ্র থেকে স্কেল হবে। চূড়ান্ত কোডটি এরকম দেখাচ্ছে।
this.layerGroups.selectAll('.dot')
.data(data)
.enter()
.append('g')
.attrs({
class: d => `dot ${d.metric}`,
transform: (d,i) => `translate(${valueScale(d.value) * Math.sin( sliceSize * i)} ${valueScale(d.value) * Math.cos( sliceSize * i + Math.PI)})`
})
.append('circle')
.attrs({
r: this.opts.dotRadius,
cx: 0,
cy: 0,
})
এই পরিবর্তনটি করার পরে, আমি আমার সিএসএস circle
পরিবর্তে এর পরিবর্তে লক্ষ্যবস্তু করেছিলাম.dot
করতে transform: scale(2)
। আমার এমনকি ব্যবহারের প্রয়োজনও ছিল না transform-origin
।
মন্তব্য:
আমি ব্যাবহার করছি d3-selection-multi
দ্বিতীয় উদাহরণ । এটি আমাকে প্রতিটি বৈশিষ্ট্যের জন্য .attrs
পুনরাবৃত্তি না .attr
করে কোনও বস্তুকে পাস করার অনুমতি দেয় ।
আক্ষরিক স্ট্রিং টেম্পলেট ব্যবহার করার সময়, প্রথম উদাহরণে বর্ণিত লাইন-ব্রেক সম্পর্কে সচেতন হন। এটি আউটপুটে একটি নতুন লাইন অন্তর্ভুক্ত করবে এবং আপনার কোড ভঙ্গ করতে পারে।