Oldukça sık sorulduğunu duyduğum bir soru: Düz renkler yerine degradelerden gölgeler oluşturmak mümkün mü? Bunu yapan belirli bir CSS özelliği yoktur (inan bana, baktım) ve bununla ilgili bulduğunuz herhangi bir blog yazısı temelde bir degradeye yaklaşmak için birçok CSS numarasıdır. Aslında ilerledikçe bunlardan bazılarını ele alacağız.
Ama önce… bir diğeri degrade gölgeler hakkında makale? Gerçekten mi?
Evet, bu konuyla ilgili başka bir gönderi, ancak farklı. Birlikte, başka hiçbir yerde görmediğim bir şeyi kapsayan bir çözüm elde etmek için sınırları zorlayacağız: şeffaflık. Numaraların çoğu, elemanın şeffaf olmayan bir arka planı varsa çalışır, ancak ya şeffaf bir arka planımız varsa? Bu vakayı burada inceleyeceğiz!
Başlamadan önce tanıştırayım gradyan gölgeler oluşturucum. Tek yapmanız gereken yapılandırmayı ayarlamak ve kodu almak. Ancak devam edin çünkü oluşturulan kodun arkasındaki tüm mantığı anlamanıza yardımcı olacağım.
İçindekiler
Şeffaf olmayan çözüm
Çoğu vakanın %80'inde işe yarayacak çözümle başlayalım. En tipik durum: arka plana sahip bir öğe kullanıyorsunuz ve ona bir degrade gölge eklemeniz gerekiyor. Orada dikkate alınması gereken şeffaflık sorunu yok.
Çözüm, gradyanın tanımlandığı bir sözde öğeye güvenmektir. Onu gerçek öğenin arkasına yerleştirirsiniz ve ona bir bulanıklık filtresi uygula.
.box { position: relative;
}
.box::before { content: ""; position: absolute; inset: -5px; /* control the spread */ transform: translate(10px, 8px); /* control the offsets */ z-index: -1; /* place the element behind */ background: /* your gradient here */; filter: blur(10px); /* control the blur */
}
Çok fazla kod gibi görünüyor ve bunun nedeni de öyle. İşte bunu nasıl yapabileceğimiz box-shadow
bunun yerine bir degrade yerine düz bir renk kullanıyor olsaydık.
box-shadow: 10px 8px 10px 5px orange;
Bu size ilk snippet'teki değerlerin ne yaptığına dair iyi bir fikir vermelidir. X ve Y ofsetlerimiz, bulanıklık yarıçapımız ve yayılma mesafemiz var. Yayılma mesafesi için negatif bir değere ihtiyacımız olduğuna dikkat edin. inset
özelliği.
İşte bir klasiğin yanındaki degrade gölgeyi gösteren bir demo box-shadow
:
Yakından bakarsanız, her iki gölgenin de biraz farklı olduğunu fark edeceksiniz, özellikle bulanık kısım. Bu bir sürpriz değil çünkü eminim ki filter
özelliğin algoritması, özelliğin algoritmasından farklı çalışır. box-shadow
. Sonuçta, sonuç oldukça benzer olduğu için bu büyük bir anlaşma değil.
Bu çözüm iyidir, ancak yine de sistemle ilgili birkaç dezavantajı vardır. z-index: -1
deklarasyon. Evet var “bağlam yığınlama” orada oluyor!
başvurdum transform
ana öğeye ve bum! Gölge artık öğenin altında değildir. Bu bir hata değil, yığınlama bağlamının mantıksal sonucudur. Endişelenmeyin, yığınlama bağlamı hakkında sıkıcı bir açıklamaya başlamayacağım (Bunu zaten bir Yığın Taşması iş parçacığında yaptım), ama yine de size bu sorunu nasıl çözeceğinizi göstereceğim.
Önerdiğim ilk çözüm, bir 3D kullanmaktır. transform
:
.box { position: relative; transform-style: preserve-3d;
}
.box::before { content: ""; position: absolute; inset: -5px; transform: translate3d(10px, 8px, -1px); /* (X, Y, Z) */ background: /* .. */; filter: blur(10px);
}
Kullanmak yerine z-index: -1
, Z ekseni boyunca negatif öteleme kullanacağız. Her şeyi içine koyacağız translate3d()
. Kullanmayı unutma transform-style: preserve-3d
ana eleman üzerinde; Aksi takdirde, 3D transform
yürürlüğe girmeyecek.
Bildiğim kadarıyla bu çözümün bir yan etkisi yok… ama belki siz bir yan etki görüyorsunuz. Durum buysa, yorum bölümünde paylaşın ve buna bir çözüm bulmaya çalışalım!
Herhangi bir nedenle 3D kullanamıyorsanız transform
, diğer çözüm ise iki sözde öğeye güvenmektir — ::before
ve ::after
. Biri degrade gölgeyi oluşturur, diğeri ise ana arka planı (ve ihtiyaç duyabileceğiniz diğer stilleri) yeniden üretir. Bu şekilde, her iki sözde öğenin yığın sırasını kolayca kontrol edebiliriz.
.box { position: relative; z-index: 0; /* We force a stacking context */
}
/* Creates the shadow */
.box::before { content: ""; position: absolute; z-index: -2; inset: -5px; transform: translate(10px, 8px); background: /* .. */; filter: blur(10px);
}
/* Reproduces the main element styles */
.box::after { content: """; position: absolute; z-index: -1; inset: 0; /* Inherit all the decorations defined on the main element */ background: inherit; border: inherit; box-shadow: inherit;
}
olduğumuzu not etmek önemlidir. zorlama bildirerek yığın bağlamı oluşturmak için ana öğe z-index: 0
ya da aynı şeyi yapan başka herhangi bir özellik, üstünde. Ayrıca, sözde öğelerin ana öğenin dolgu kutusunu referans olarak kabul ettiğini unutmayın. Bu nedenle, ana öğenin bir sınırı varsa, sözde öğe stillerini tanımlarken bunu hesaba katmanız gerekir. kullandığımı fark edeceksiniz inset: -2px
on ::after
ana eleman üzerinde tanımlanan sınırı hesaba katmak için.
Dediğim gibi, şeffaflığı desteklemeniz gerekmediği sürece, degrade gölge istediğiniz çoğu durumda bu çözüm muhtemelen yeterince iyidir. Ama meydan okumak ve sınırları zorlamak için buradayız, bu yüzden sırada olacaklara ihtiyacın olmasa bile benimle kal. Muhtemelen başka yerlerde kullanabileceğiniz yeni CSS hileleri öğreneceksiniz.
şeffaf çözüm
3D'de kaldığımız yerden devam edelim transform
ve arka planı ana öğeden kaldırın. Hem uzaklıkları hem de yayılma mesafesi şuna eşit olan bir gölgeyle başlayacağım: 0
.
Fikir, dışarıda olanı tutarken öğenin alanı içindeki (yeşil sınırın içindeki) her şeyi kesmenin veya gizlemenin bir yolunu bulmaktır. kullanacağız clip-path
bunun için. Ama nasıl olduğunu merak edebilirsin clip-path
kesim yapabilir içeride bir element.
Aslında bunu yapmanın bir yolu yok ama bunu belirli bir çokgen deseni kullanarak simüle edebiliriz:
clip-path: polygon(-100vmax -100vmax,100vmax -100vmax,100vmax 100vmax,-100vmax 100vmax,-100vmax -100vmax,0 0,0 100%,100% 100%,100% 0,0 0)
Tada! Şeffaflığı destekleyen bir degrade gölgemiz var. Tek yaptığımız bir eklemek clip-path
önceki koda İşte poligon kısmını gösteren bir şekil.
Mavi alan, uygulandıktan sonra görünen kısımdır. clip-path
. Konsepti göstermek için sadece mavi rengi kullanıyorum ama gerçekte sadece o alanın içindeki gölgeyi göreceğiz. Gördüğünüz gibi, büyük bir değerle tanımlanmış dört noktamız var (B
). benim büyük değerim 100vmax
, ancak istediğiniz herhangi bir büyük değer olabilir. Fikir, gölge için yeterli alana sahip olmamızı sağlamaktır. Ayrıca sözde öğenin köşeleri olan dört noktamız var.
Oklar, çokgeni tanımlayan yolu göstermektedir. den başlıyoruz (-B, -B)
biz ulaşana kadar (0,0)
. Toplamda 10 puana ihtiyacımız var. Sekiz nokta değil çünkü iki nokta yolda iki kez tekrarlanıyor ((-B,-B)
ve (0,0)
).
hala var bir şey daha Bize kalan, yayılma mesafesini ve ofsetleri hesaba katmak. Yukarıdaki demonun çalışmasının tek nedeni, ofsetlerin ve yayılma mesafesinin şuna eşit olduğu özel bir durum olmasıdır: 0
.
Yayılmayı tanımlayalım ve ne olacağını görelim. kullandığımızı unutmayın inset
Bunu yapmak için negatif bir değerle:
Sözde öğe artık ana öğeden daha büyüktür, yani clip-path
ihtiyacımız olandan daha fazlasını keser. Unutmayın, her zaman parçayı kesmemiz gerekir. içeride ana öğe (örneğin yeşil kenarlık içindeki alan). İçindeki dört noktanın konumunu ayarlamamız gerekiyor. clip-path
.
.box { --s: 10px; /* the spread */ position: relative;
}
.box::before { inset: calc(-1 * var(--s)); clip-path: polygon( -100vmax -100vmax, 100vmax -100vmax, 100vmax 100vmax, -100vmax 100vmax, -100vmax -100vmax, calc(0px + var(--s)) calc(0px + var(--s)), calc(0px + var(--s)) calc(100% - var(--s)), calc(100% - var(--s)) calc(100% - var(--s)), calc(100% - var(--s)) calc(0px + var(--s)), calc(0px + var(--s)) calc(0px + var(--s)) );
}
Bir CSS değişkeni tanımladık, --s
, yayılma mesafesi için ve çokgen noktalarını güncelledi. Büyük değeri kullandığım noktalara dokunmadım. Yalnızca sözde öğenin köşelerini tanımlayan noktaları güncelliyorum. Tüm sıfır değerlerini artırıyorum --s
ve azaltmak 100%
değerlere göre --s
.
Ofsetlerle aynı mantık. Pseudo-element'i çevirdiğimizde gölgenin hizası bozuluyor ve çokgeni tekrar düzeltmemiz ve noktaları ters yönde hareket ettirmemiz gerekiyor.
.box { --s: 10px; /* the spread */ --x: 10px; /* X offset */ --y: 8px; /* Y offset */ position: relative;
}
.box::before { inset: calc(-1 * var(--s)); transform: translate3d(var(--x), var(--y), -1px); clip-path: polygon( -100vmax -100vmax, 100vmax -100vmax, 100vmax 100vmax, -100vmax 100vmax, -100vmax -100vmax, calc(0px + var(--s) - var(--x)) calc(0px + var(--s) - var(--y)), calc(0px + var(--s) - var(--x)) calc(100% - var(--s) - var(--y)), calc(100% - var(--s) - var(--x)) calc(100% - var(--s) - var(--y)), calc(100% - var(--s) - var(--x)) calc(0px + var(--s) - var(--y)), calc(0px + var(--s) - var(--x)) calc(0px + var(--s) - var(--y)) );
}
Ofsetler için iki değişken daha vardır: --x
ve --y
. içlerinde kullanıyoruz transform
ve biz de güncelliyoruz clip-path
değerler. Hala büyük değerlere sahip çokgen noktalarına dokunmuyoruz, ancak diğerlerini dengeliyoruz — azaltıyoruz --x
X koordinatlarından ve --y
Y koordinatlarından
Şimdi tek yapmamız gereken, degrade gölgeyi kontrol etmek için birkaç değişkeni güncellemek. Hazır başlamışken, bulanıklık yarıçapını da bir değişken yapalım:
Hala 3D'ye ihtiyacımız var mı?
transform
hile?
Her şey sınıra bağlı. Sözde öğe referansının dolgu kutusu olduğunu unutmayın, bu nedenle ana öğenize bir kenarlık uygularsanız, bir örtüşme elde edersiniz. Ya 3D kalsın transform
hile veya güncelleme inset
sınırı hesaba katacak değer.
İşte güncellenmiş bir önceki demo inset
3D yerine değer transform
:
Bunun daha uygun bir yol olduğunu söyleyebilirim çünkü yayılma mesafesi dolgu kutusu yerine sınır kutusundan başladığı için daha doğru olacaktır. Ama ayarlamanız gerekecek inset
ana öğenin sınırına göre değer. Bazen öğenin sınırı bilinmez ve önceki çözümü kullanmanız gerekir.
Daha önceki şeffaf olmayan çözümle, yığınlama bağlamı sorunuyla karşılaşmanız olasıdır. Ve şeffaf çözümle bunun yerine bir sınır sorunuyla karşılaşmanız mümkündür. Artık bu sorunları çözmek için seçenekleriniz ve yollarınız var. 3B dönüştürme hilesi en sevdiğim çözüm çünkü tüm sorunları çözüyor (çevrimiçi jeneratör onu da değerlendireceğim)
Kenarlık yarıçapı ekleme
eklemeye çalışırsan border-radius
başladığımız şeffaf olmayan çözümü kullanırken, bu oldukça önemsiz bir iştir. Tek yapmanız gereken, ana öğeden aynı değeri devralmak ve bitirdiniz.
Bir kenarlık yarıçapınız olmasa bile, tanımlamak iyi bir fikirdir. border-radius: inherit
. Bu, herhangi bir potansiyeli hesaba katar border-radius
daha sonra veya başka bir yerden gelen bir kenarlık yarıçapı eklemek isteyebilirsiniz.
Şeffaf çözümle uğraşırken farklı bir hikaye. Ne yazık ki, başka bir çözüm bulmak anlamına geliyor çünkü clip-path
eğriliklerle baş edemez. Bu, ana elemanın içindeki alanı kesemeyeceğimiz anlamına gelir.
tanıtacağız mask
karışım özelliği.
Bu kısım çok sıkıcıydı ve genel bir çözüm bulmakta zorlandım. sihirli sayılar. Sonunda yalnızca bir sözde öğe kullanan çok karmaşık bir çözüm buldum, ancak kod yalnızca birkaç belirli durumu kapsayan bir spagetti yığınıydı. Bence o yolu keşfetmeye değmez.
Daha basit kod uğruna fazladan bir öğe eklemeye karar verdim. İşte işaretleme:
<div class="box"> <sh></sh>
</div>
Özel bir öğe kullanıyorum, <sh>
, harici CSS ile olası çakışmaları önlemek için. bir kullanabilirdim <div>
, ancak ortak bir öğe olduğu için, başka bir yerden gelen ve kodumuzu bozabilecek başka bir CSS kuralı tarafından kolayca hedef alınabilir.
İlk adım, <sh>
öğe ve bilerek bir taşma oluşturun:
.box { --r: 50px; position: relative; border-radius: var(--r);
}
.box sh { position: absolute; inset: -150px; border: 150px solid #0000; border-radius: calc(150px + var(--r));
}
Kod biraz tuhaf görünebilir, ancak ilerledikçe arkasındaki mantığa ulaşacağız. Ardından, bir sözde öğe kullanarak gradyan gölgesini oluşturuyoruz. <sh>
.
.box { --r: 50px; position: relative; border-radius: var(--r); transform-style: preserve-3d;
}
.box sh { position: absolute; inset: -150px; border: 150px solid #0000; border-radius: calc(150px + var(--r)); transform: translateZ(-1px)
}
.box sh::before { content: ""; position: absolute; inset: -5px; border-radius: var(--r); background: /* Your gradient */; filter: blur(10px); transform: translate(10px,8px);
}
Gördüğünüz gibi, sözde öğe önceki tüm örneklerle aynı kodu kullanır. Tek fark 3D transform
tanımlanmış <sh>
sözde öğe yerine öğe. Şimdilik, şeffaflık özelliği olmayan bir degrade gölgemiz var:
Alanın <sh>
eleman siyah çerçeve ile tanımlanır. Bunu neden yapıyorum? Çünkü bu şekilde, bir başvuruda bulunabiliyorum. mask
yeşil alanın içindeki kısmı gizlemek ve taşan kısmı gölgeyi görmemiz gereken yerde tutmak için.
Biliyorum biraz zor ama aksine clip-path
, mask
mülk alanı hesaba katmaz dışında şeyleri göstermek ve gizlemek için bir öğe. Bu nedenle, "dış" alanı simüle etmek için ekstra öğeyi tanıtmak zorunda kaldım.
Ayrıca, bir kombinasyon kullandığımı unutmayın. border
ve inset
o alanı tanımlamak için. Bu, sözde öğenin ek hesaplamalara ihtiyaç duymaması için bu ekstra öğenin dolgu kutusunu ana öğeyle aynı tutmamı sağlıyor.
Fazladan bir eleman kullanmaktan elde ettiğimiz başka bir yararlı şey, elemanın sabit olması ve sadece sözde elemanın hareket etmesidir (kullanarak translate
). Bu, maskeyi kolayca tanımlamamı sağlayacak. son bu numaranın adımı.
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
mask-composite: exclude;
Bitti! Degrade gölgemiz var ve destekliyor border-radius
! Muhtemelen bir kompleks bekliyordun mask
tonlarca gradyan ile değer, ama hayır! Sadece iki basit gradyana ihtiyacımız var ve bir mask-composite
büyüyü tamamlamak için.
izole edelim <sh>
orada neler olduğunu anlamak için öğe:
.box sh { position: absolute; inset: -150px; border: 150px solid red; background: lightblue; border-radius: calc(150px + var(--r));
}
İşte aldığımız şey:
İç yarıçapın ana elemanın yarıçapıyla nasıl eşleştiğine dikkat edin. border-radius
. Büyük bir sınır tanımladım (150px
) Ve border-radius
büyük sınıra eşit artı ana elemanın yarıçapı. Dışarıda, eşit bir yarıçapa sahibim 150px + R
. İçeride, ben varım 150px + R - 150px = R
.
İç (mavi) kısmı gizlemeli ve kenarlık (kırmızı) kısmın hala görünür olduğundan emin olmalıyız. Bunu yapmak için, biri yalnızca içerik kutusu alanını kaplayan ve diğeri kenarlık kutusu alanını (varsayılan değer) kaplayan iki maske katmanı tanımladım. Sonra sınırı ortaya çıkarmak için birini diğerinden dışladım.
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
mask-composite: exclude;
aynı tekniği kullandım degradeleri destekleyen bir kenarlık oluşturun ve border-radius
. Ana Tudor'un da iyi bir makalesi var kompozit maskeleme hakkında sizi okumaya davet ediyorum.
Bu yöntemin herhangi bir dezavantajı var mı?
Evet, bu kesinlikle mükemmel değil. Karşılaşabileceğiniz ilk sorun, ana öğede kenarlık kullanmakla ilgilidir. Bu, hesaba katmazsanız yarıçapta küçük bir yanlış hizalama oluşturabilir. Örneğimizde bu sorun var, ancak belki de pek fark edemezsiniz.
Düzeltme nispeten kolaydır: Kenarlığın genişliğini ekleyin. <sh>
elementler inset
.
.box { --r: 50px; border-radius: var(--r); border: 2px solid;
}
.box sh { position: absolute; inset: -152px; /* 150px + 2px */ border: 150px solid #0000; border-radius: calc(150px + var(--r));
}
Diğer bir dezavantaj, kenarlık için kullandığımız büyük değerdir (150px
örnekte). Bu değer, gölgeyi içerecek kadar büyük olmalı, ancak taşma ve kaydırma çubuğu sorunlarını önlemek için çok büyük olmamalıdır. neyse ki çevrimiçi jeneratör tüm parametreleri göz önünde bulundurarak en uygun değeri hesaplayacaktır.
Farkında olduğum son dezavantaj, bir kompleks ile çalıştığınız zamandır. border-radius
. Örneğin, her köşeye farklı bir yarıçap uygulanmasını istiyorsanız, her kenar için bir değişken tanımlamanız gerekir. Sanırım bu gerçekten bir dezavantaj değil, ancak kodunuzun bakımını biraz daha zorlaştırabilir.
.box { --r-top: 10px; --r-right: 40px; --r-bottom: 30px; --r-left: 20px; border-radius: var(--r-top) var(--r-right) var(--r-bottom) var(--r-left);
}
.box sh { border-radius: calc(150px + var(--r-top)) calc(150px + var(--r-right)) calc(150px + var(--r-bottom)) calc(150px + var(--r-left));
}
.box sh:before { border-radius: var(--r-top) var(--r-right) var(--r-bottom) var(--r-left);
}
çevrimiçi jeneratör basitlik adına yalnızca tekdüze bir yarıçapı dikkate alır, ancak artık karmaşık bir yarıçap konfigürasyonu düşünmek istiyorsanız kodu nasıl değiştireceğinizi biliyorsunuz.
Tamamlayan
Sona geldik! Degrade gölgelerin ardındaki sihir artık bir sır değil. Karşılaşabileceğiniz tüm olasılıkları ve olası sorunları ele almaya çalıştım. Bir şeyi kaçırırsam veya herhangi bir sorun keşfederseniz, lütfen yorum bölümünde bildirmekten çekinmeyin, kontrol edeceğim.
Yine, fiili çözümün kullanım durumlarınızın çoğunu kapsayacağı düşünüldüğünde, bunların çoğu muhtemelen aşırıya kaçıyor. Yine de, hilenin arkasındaki "neden" ve "nasıl"ı ve sınırlamalarının nasıl aşılacağını bilmek güzel. Artı, CSS kırpma ve maskeleme ile iyi bir alıştırma yaptık.
Ve tabii ki sahipsin çevrimiçi jeneratör uğraşmamak için dilediğiniz zaman ulaşabilirsiniz.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- Plato blok zinciri. Web3 Metaverse Zekası. Bilgi Güçlendirildi. Buradan Erişin.
- Kaynak: https://css-tricks.com/different-ways-to-get-css-gradient-shadows/
- 1
- 10
- 11
- 3d
- 7
- 9
- 98
- a
- Yapabilmek
- Hakkımızda
- hakkında
- yukarıdaki
- kesin
- Göre
- Hesap
- Hesaplar
- doğru
- aslında
- Ek
- Sonra
- algoritma
- Türkiye
- veriyor
- zaten
- her zaman
- Ana
- ve
- Başka
- hiçbir yerde
- uygulamalı
- Tamam
- Uygulanması
- ALAN
- etrafında
- göre
- önlemek
- arka fon
- temel olarak
- Çünkü
- önce
- arkasında
- Inanmak
- altında
- Büyük
- büyük
- Bit
- Siyah
- Blog
- Mavi
- bulanıklık
- sınır
- Sıkıcı
- kutu
- mola
- Böcek
- hesaplamak
- yapamam
- dava
- durumlarda
- meydan okuma
- Kontrol
- klasik
- klip yolu
- yakından
- kod
- renk
- kombinasyon
- gelecek
- yorum Yap
- ortak
- tamamlamak
- karmaşık
- kavram
- yapılandırma
- fikir ayrılığı
- Düşünmek
- düşünen
- dikkate
- içerik
- bağlam
- kontrol
- Köşe
- köşeleri
- olabilir
- kurs
- kapak
- kapaklar
- yaratmak
- oluşturur
- CSS
- CSS Püf Noktaları
- görenek
- kesim
- keser
- anlaşma
- ilgili
- karar
- azaltmak
- Varsayılan
- tanımlı
- tanımlar
- tanımlarken
- kesinlikle
- Gösteri
- bağlıdır
- DID
- fark
- farklı
- yön
- keşfetmek
- mesafe
- Değil
- yapıyor
- Dont
- sakıncaları
- her
- Daha erken
- kolayca
- Efekt
- ya
- başka yerde
- yeterli
- sağlamak
- özellikle
- Eter (ETH)
- Hatta
- her şey
- örnek
- örnekler
- hariç
- Egzersiz
- beklenen
- açıklama
- keşfetmek
- Keşfetmek
- dış
- ekstra
- Yüz
- facto
- oldukça
- Favori
- Özellikler(Hazırlık aşamasında)
- az
- şekil
- filtre
- bulmak
- bulma
- Ad
- sabit
- sabit
- takip et
- Zorla
- Ücretsiz
- itibaren
- genel
- oluşturulan
- almak
- Vermek
- Go
- gidiş
- Tercih Etmenizin
- gradyanları
- Yeşil
- olur
- yardım et
- okuyun
- gizlemek
- Ne kadar
- Nasıl Yapılır
- HTML
- HTTPS
- Ben
- Fikir
- önemli
- in
- Artırmak
- yerine
- tanıtmak
- davetiye
- konu
- sorunlar
- IT
- tutmak
- koruma
- Bilmek
- Soyad
- katmanları
- ÖĞRENİN
- Muhtemelen
- sınırlamaları
- sınırları
- küçük
- Uzun
- uzun
- Bakın
- baktı
- GÖRÜNÜYOR
- Çok
- sihirli
- Ana
- korumak
- çoğunluk
- yapmak
- maske
- anlamına geliyor
- yöntem
- olabilir
- değiştirmek
- an
- Daha
- çoğu
- hareket
- hareketli
- mozilla
- Gizem
- gerek
- negatif
- yine de
- yeni
- sonraki
- ofset
- ONE
- Online
- karşısında
- optimum
- Opsiyonlar
- Portakal
- sipariş
- Diğer
- Diğer
- aksi takdirde
- taslak
- dışında
- Üstesinden gelmek
- parametreler
- Bölüm
- belirli
- yol
- model
- MÜKEMMEL OLAN YERİ BULUN
- belki
- seçmek
- yer
- Platon
- Plato Veri Zekası
- PlatoVeri
- oynama
- Lütfen
- artı
- noktaları
- Çokgen
- pozisyon
- olanakları
- mümkün
- Çivi
- potansiyel
- güzel
- önceki
- muhtemelen
- özellik
- Itmek
- koymak
- soru
- ulaşmak
- ulaştı
- Okumak
- Gerçeklik
- neden
- tavsiye etmek
- Kırmızı
- azaltmak
- ilgili
- Nispeten
- güvenmek
- hatırlamak
- Kaldır
- tekrarlanan
- rapor
- sonuç
- açığa vurmak
- Rota
- Kural
- Adı geçen
- uğruna
- aynı
- Bölüm
- gölge
- paylaş
- meli
- şov
- benzer
- Basit
- basitlik
- beri
- küçük
- So
- katı
- çözüm
- biraz
- bir şey
- bir yerde
- uzay
- özel
- yayılma
- yığın
- istif
- başlama
- başladı
- başlar
- kalmak
- adım
- Yine
- Öykü
- uygun
- destek
- Destekler
- sürpriz
- Bizi daha iyi tanımak için
- Hedeflenen
- Görev
- The
- Alan
- şey
- işler
- Düşünmek
- için
- birlikte
- çok
- konu
- Toplam
- dokunma
- Dönüştürmek
- çevirmek
- Çeviri
- Şeffaflık
- şeffaf
- hileler
- gerçek
- tipik
- anlamak
- Güncelleme
- güncellenmiş
- us
- kullanım
- değer
- Değerler
- gözle görülür
- yolları
- Ne
- Nedir
- hangi
- süre
- irade
- olmadan
- İş
- çalışma
- çalışır
- değer
- X
- Z-endeksi
- zefirnet
- sıfır