আমারও একি দশা. তবে আমি আমার উপাদানগুলি অবস্থান করতে ডি 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করে কোনও বস্তুকে পাস করার অনুমতি দেয় ।
আক্ষরিক স্ট্রিং টেম্পলেট ব্যবহার করার সময়, প্রথম উদাহরণে বর্ণিত লাইন-ব্রেক সম্পর্কে সচেতন হন। এটি আউটপুটে একটি নতুন লাইন অন্তর্ভুক্ত করবে এবং আপনার কোড ভঙ্গ করতে পারে।