Sachverhalt:
A.
Die 1974 geborene A._ ist seit Geburt sehbehindert. Die IV-Stelle des Kantons Zürich kam für diverse medizinische und berufliche Massnahmen auf. Am 5. November 2008 schloss die Versicherte im Rahmen einer beruflichen Massnahme der IV-Stelle das Studium der Rechtswissenschaft ab. Nach diversen Praktika trat sie ab 1. April 2012 zu 50 % eine Stelle bei der Kanzlei B._ an, wobei die IV-Stelle bis September 2012 Einarbeitungszuschüsse leistete. Sie holte ein interdisziplinäres Gutachten der Medizinischen Abklärungsstelle ZVMB GmbH (MEDAS), Bern, vom 27. Januar 2016 ein. Am 1. Oktober 2016 trat die Versicherte zu 60 % eine Stelle als Beraterin bei der Zeitschrift C._ an. Am 8. November 2016 beantwortete die ZVMB Zusatzfragen der IV-Stelle. Mit Verfügung vom 19. April 2018 verneinte Letztere einen Rentenanspruch der Versicherten, da ihr Invaliditätsgrad lediglich 14 % betrage.
B.
In teilweiser Gutheissung der Beschwerde der Versicherten hob das Sozialversicherungsgericht des Kantons Zürich die Verfügung der IV-Stelle auf und stellte fest, die Versicherte habe Anspruch auf eine ganze Invalidenrente vom 1. Dezember 2008 bis 31. März 2012, auf eine Dreiviertelsrente vom 1. April 2012 bis 31. Dezember 2015 und auf eine halbe Invalidenrente vom 1. Januar 2016 bis 30. September 2016 (Entscheid vom 29. Februar 2020).
C.
Mit Beschwerde in öffentlich-rechtlichen Angelegenheiten beantragt die Versicherte, in Aufhebung des kantonalen Entscheides sei ihr vom 1. Dezember 2008 bis 30. Juni 2012 eine ganze Invalidenrente, vom 1. Juli 2012 bis 31. Dezember 2015 eine Dreiviertelsrente, vom 1. Januar 2016 bis 30. Dezember 2016 eine halbe Invalidenrente und ab 1. Januar 2017 eine Viertelsrente zuzusprechen.
Die IV-Stelle und das Bundesamt für Sozialversicherungen verzichten auf eine Vernehmlassung, wobei Erstere die Abweisung der Beschwerde verlangt.

Erwägungen:
1.
Mit der Beschwerde in öffentlich-rechtlichen Angelegenheiten kann eine Rechtsverletzung nach Art. 95 f. BGG gerügt werden. Das Bundesgericht wendet das Recht von Amtes wegen an (<ref-law>). Dennoch prüft es - offensichtliche Fehler vorbehalten - nur die in seinem Verfahren gerügten Rechtsmängel (Art. 42 Abs. 1 f. BGG; <ref-ruling> E. 2.2.1 S. 389). Es legt seinem Urteil den Sachverhalt zugrunde, den die Vorinstanz festgestellt hat (<ref-law>). Es kann ihre Sachverhaltsfeststellung von Amtes wegen berichtigen oder ergänzen, wenn sie offensichtlich unrichtig ist oder auf einer Rechtsverletzung im Sinne von <ref-law> beruht und wenn die Behebung des Mangels für den Verfahrensausgang entscheidend sein kann (Art. 97 Abs. 1, Art. 105 Abs. 2 BGG). Als Rechtsfrage gilt, ob die rechtserheblichen Tatsachen vollständig festgestellt und ob der Untersuchungsgrundsatz bzw. die Beweiswürdigungsregeln nach <ref-law> beachtet wurden. Gleiches gilt für die Frage, ob den medizinischen Gutachten und Arztberichten im Lichte der rechtsprechungsgemässen Anforderungen Beweiswert zukommt (<ref-ruling> E. 5.1 S. 232). Bei den aufgrund dieser Berichte getroffenen Feststellungen zum Gesundheitszustand und zur Arbeitsfähigkeit und bei der konkreten Beweiswürdigung geht es um Sachverhaltsfragen (nicht publ. E. 1 des Urteils <ref-ruling>).
2.
Die Vorinstanz hat die rechtlichen Grundlagen über die Erwerbsunfähigkeit (<ref-law>), die Invalidität (<ref-law>), die Voraussetzungen des Rentenanspruchs (<ref-law>), die Invaliditätsbemessung nach der allgemeinen Methode des Einkommensvergleichs (<ref-law>; <ref-law>; <ref-ruling> E. 4.1.3 S. 300, 139 V 28 E. 3.3.2 S. 30, 592 E. 2.3 S. 593, 128 V 29 E. 4e S. 34) und die Rentenrevision (<ref-law>; <ref-law>; <ref-ruling> E. 2.3 S. 11, 133 V 108, 130 V 343 E. 3.5.3 S. 351) richtig dargelegt. Darauf wird verwiesen.
3.
Streitig ist, ob die vorinstanzliche Rentenfestsetzung vor Bundesrecht standhält.
Die Vorinstanz erwog im Wesentlichen, das von der Beschwerdeführerin ohne Gesundheitsschaden erzielbare Valideneinkommen sei gestützt auf eine Tätigkeit als Juristin zu berechnen. Mit dem Abschluss des Studiums der Rechtswissenschaft im November 2008 habe sie (erstmals) zureichende berufliche Kenntnisse nach <ref-law> erworben. Das Valideneinkommen sei gestützt auf die vom Bundesamt für Statistik periodisch herausgegebenen Lohnstrukturerhebung (LSE) zu ermitteln. Darin werde erst seit 2012 nach Berufsgruppen unterschieden (vgl. Tabelle T17). Somit sei bei der Berechnung des Valideneinkommens früherer Jahre ausgehend vom Wert des Jahres 2012 die zwischenzeitliche Nominallohnentwicklung abzuziehen. 2012 hätten Juristinnen, die zwischen 30 und 49 Jahre alt gewesen seien, im Median Fr. 7930.- pro Monat verdient. Es ergäben sich folgende Jahreseinkommen: 2008 Fr. 94'036.90, 2009 Fr. 96'031.25, 2010 Fr. 97'047.30, 2011 Fr. 98'223.55 und 2012 Fr. 99'204.30. Im Jahr 2016 ergäbe sich ausgehend vom entsprechenden Tabellenwert dieses Jahres ein Einkommen von Fr. 101'318.50.
Beim trotz Gesundheitsschadens erzielbaren Invalideneinkommen sei davon auszugehen, dass die Versicherte gemäss dem ZVMB-Gutachten vom 27. Januar 2016/8. November 2016nach Studienabschluss zunächst nur zu 30 % arbeitsfähig (50%ige Leistungsfähigkeit bei einem Arbeitspensum von 60 %) gewesen sei. Das Invalideneinkommen sei aufgrund dieser Arbeitsfähigkeit für die Jahre 2008 bis 2011 gestützt auf die besagten LSE-Tabellenlöhne zu berechnen, was 2008 Fr. 28'211.05, 2009 Fr. 28'809.40, 2010 Fr. 29'114.20 und 2011 Fr. 29'467.05 ergebe. Erst seit der Arbeitstätigkeit für B._ ab 1. April 2012 entspreche das effektiv erzielte Einkommen dem Invalideneinkommen.
Aus der Gegenüberstellung von Validen- und Invalideneinkommen resultiere somit ab dem Jahr 2008 bis und mit März 2012 ein Invaliditätsgrad von 70 % bzw. der Anspruch auf eine ganze Invalidenrente. Ab April 2012 bestehe bei einem Valideneinkommen von Fr. 99'204.30 und einem Invalideneinkommen von Fr. 39'000.- (13 x Fr. 3000.-) ein Invaliditätsgrad von 61 % bzw. der Anspruch auf eine Dreiviertelsrente. Diese Änderung sei ab April 2012 zu berücksichtigen, da ab diesem Zeitpunkt habe angenommen werden können, die Verbesserung werde voraussichtlich längere Zeit dauern (<ref-law>). Ab Januar 2016, d.h. ab der Lohnerhöhung bei B._, habe das Invalideneinkommen Fr. 41'600.- (13 x Fr. 3200.-) betragen, woraus bei einem Valideneinkommen von Fr. 101'318.50 ein Invaliditätsgrad von gerundet 59 % bzw. der Anspruch auf eine halbe Invalidenrente resultiere. Ab 1. Oktober 2016 bestehe bei einem Valideneinkommen von Fr. 101'318.50 und einem Invalideneinkommen bei C._ von Fr. 68'640.- ein Invaliditätsgrad von 32 % und somit kein Rentenanspruch mehr.
4.
4.1. Der Einkommensvergleich hat in der Regel in der Weise zu erfolgen, dass die beiden hypothetischen Erwerbseinkommen ziffernmässig möglichst genau ermittelt und einander gegenübergestellt werden, worauf sich aus der Einkommensdifferenz der Invaliditätsgrad bestimmen lässt. Der Invaliditätsgrad ist durch Prozentvergleich (<ref-ruling> E. 3a S. 312 f.) zu ermitteln, wenn Validen- und Invalideneinkommen sich nicht hinreichend genau oder nur mit unverhältnismässig grossem Aufwand bestimmen lassen und in letzterem Fall zudem angenommen werden kann, die Gegenüberstellung der nach Massgabe der im Einzelfall bekannten Umstände geschätzten, mit Prozentzahlen bewerteten hypothetischen Einkommen ergebe ein ausreichend zuverlässiges Resultat. Diese Berechnungsweise ist insbesondere anwendbar, wenn die konkreten Verhältnisse so liegen, dass die Differenz zwischen Validen- und Invalideneinkommen die für den Umfang des Rentenanspruchs massgebenden Grenzwerte von 70, 60, 50 und 40 Prozent (<ref-law>) eindeutig über- oder unterschreitet (Urteile 9C_228/2019 vom 27. August 2019 E. 4.1, 9C_271/2018 vom 19. März 2019 E. 3.1 und 8C_367/2018 vom 25. September 2018 E. 4.3, je mit weiteren Hinweisen).
Bei der Feststellung der Validenkarriere der versicherten Person handelt es sich um eine Beurteilung hypothetischer Geschehensabläufe, welche eine für das Bundesgericht grundsätzlich verbindliche Tatfrage darstellt, soweit sie auf konkreter Beweiswürdigung beruht (vgl. E. 1 hiervor). Dies gilt selbst dann, wenn auch Schlussfolgerungen aus der allgemeinen Lebenserfahrung mitberücksichtigt werden (Urteil 9C_271/2018 vom 19. März 2019 E. 4.1).
4.2. Die Beschwerdeführerin bringt vor, der Prozentvergleich sei die sachgerechte Methode zur Bemessung ihrer Invalidität. Die Vorinstanz habe sich hiermit nicht auseinandergesetzt und somit die Begründungspflicht verletzt.
Vor Vorinstanz führte die Versicherte aus, da sie in der aktuellen Stelle bei C._ mit einem 60%igen Pensum als Juristin bestmöglich eingegliedert sei, erscheine alternativ zumindest pro futuro ein Prozentvergleich als sachgerechte Möglichkeit zur Invaliditätsbemessung. Das kantonale Gericht begründete nicht, weshalb es einen Einkommens- und nicht einen Prozentvergleich vornahm (zur Begründungs pflicht vgl. <ref-ruling> E. 9.2 S. 65). Indessen ist der Einkommensvergleich vorliegend praxisgemäss die zutreffende Methode, da sich Validen- und Invalideneinkommen ziffernmässig genau und ohne unverhältnismässig grossen Aufwand bestimmen lassen (vgl. E. 4.1 hiervor und E. 4.3 f. hiernach; siehe auch Urteil 8C_367/2018 vom 25. September 2018 E. 4.3 mit Hinweisen). Ein Prozentvergleich fällt daher ausser Betracht.
4.3.
4.3.1. Die Beschwerdeführerin wendet weiter im Wesentlichen ein, mit dem Einkommensvergleich und dem Abstellen beim Valideneinkommen auf die Tabelle T17, Ziff. 26 "Jurist/innen, Sozialwissenschaftler/innen und Kulturberufe" habe die Vorinstanz zu Unrecht eine gesamtschweizerische Tabelle verwendet, anstatt die Verhältnisse in Zürich mit höheren Juristenlöhnen zu berücksichtigen. Zudem habe die Vorinstanz mit dem Einbezug der Berufsgruppen Sozialwissenschaftlerinnen und Kulturarbeiterinnen den Validenlohn noch weiter herabgezogen. Es gebe bei ihr aber keinen Hinweis für eine unterdurchschnittliche Validenkarriere. Bei ihr bestehe keine reale Validen-, sondern nur eine Invalidenkarriere. Der einzige konkrete Anhaltspunkt sei letztlich ihre erfolgreiche Invalidenkarriere, woraus Rückschlüsse auf ihren Validenverlauf gezogen werden könnten, was die Vorinstanz nicht berücksichtigt habe. Somit sei ihr aufgrund eines Prozentvergleichs für die Zukunft, nämlich ab der Anstellung bei C._ am 1. Oktober 2016, eine Viertelsrente zu gewähren.
4.3.2. Diesen Einwänden ist entgegenzuhalten, dass die Versicherte die vorinstanzliche Ermittlung des Invaliditätsgrades nach dem Einkommensvergleich und den daraus resultierenden Rentenanspruch für den Zeitraum vom 1. Dezember 2008 bis 30. September 2016 weder grundsätzlich noch masslich beanstandet (zur Rüge der Verletzung von <ref-law> vgl. E. 5 hiernach).
4.3.3. Zudem ist auch nicht ersichtlich, inwiefern das vorinstanzliche Vorgehen bundesrechtswidrig wäre. Die Beschwerdeführerin ist Juristin (lic. iur. ohne zusätzliche Abschlüsse). In dieser Konstellation ist es nicht zu beanstanden, dass die Vorinstanz zur Ermittlung ihres Valideneinkommens die LSE-Tabelle T17, Ziff. 26 "Jurist/innen, Sozialwissenschaftler/innen und Kulturberufe" beigezogen hat. Sie hat praxisgemäss zu Recht auf die für die gesamte Schweiz gültige LSE-Tabelle und nicht auf die Löhne in Zürich abgestellt (vgl. Urteil 9C_271/2018 vom 19. März 2019 E. 4.1 und E. 4.3 mit Hinweisen). Mit diesem Vorgehen wird der Versicherten mithin keine unterdurchschnittliche Validenkarriere unterstellt. Es ist nicht ersichtlich, inwiefern sie im Lichte ihrer Invalidenkarriere ein tatsächlich höheres Valideneinkommen realisiert hätte, zumal die Rechtsprechung diesbezüglich einen strengen Massstab anlegt (vgl. Urteil 8C_431/2017 vom 24. Mai 2018 E. 6.3).
4.4. Insgesamt ist die vorinstanzliche Invaliditätsbemessung nach dem Einkommensvergleich bundesrechtskonform. Sämtliche Einwände der Versicherten vermögen hieran nichts zu ändern. Somit bleibt es beim Einkommensvergleich der Vorinstanz für den gesamten Beurteilungszeitraum. Ein Wechsel zum Prozentvergleich ab der Anstellung der Beschwerdeführerin bei C._ am 1. Oktober 2016 ist nämlich entgegen ihrer Auffassung nicht gerechtfertigt.
5.
Die Beschwerdeführerin rügt weiter eine Verletzung von <ref-law> bei der vorinstanzlichen Rentenherabsetzung auf den 1. April 2012 und Rentenaufhebung auf den 1. Oktober 2016.
5.1. Nach <ref-law> ist namentlich eine Verbesserung der Erwerbsfähigkeit für die Herabsetzung oder Aufhebung der Leistung von dem Zeitpunkt an zu berücksichtigen, in dem angenommen werden kann, dass sie voraussichtlich längere Zeit dauern wird. Sie ist in jedem Fall zu berücksichtigen, nachdem sie ohne wesentliche Unterbrechung drei Monate gedauert hat und voraussichtlich weiterhin andauern wird (Satz 2). Im Regelfall ist für die Zukunft (pro futuro) abzuklären, ob eine Verbesserung der Erwerbsfähigkeit voraussichtlich längere Zeit Bestand haben wird (Urteil 8C_36/2019 vom 30. April 2019 E. 5).
Das Bundesgericht wendet in der Regel den zweiten Satz dieser Vorschrift an und gewährt oder bestätigt die bisherige höhere Rente drei Monate über die Veränderung des Gesundheitszustandes hinaus. Auf die Einräumung einer Wartedauer bis zur Aufhebung ist nach der bundesgerichtlichen Rechtsprechung nur in Ausnahmefällen zu verzichten. Die "sofortige" Aufhebung rechtfertigte sich etwa, weil eine Verbesserung bereits seit geraumer Zeit anzunehmen, der Zeitpunkt dieser Änderung der Arbeitsfähigkeit aber nirgends dokumentiert war, oder weil sich der Verlauf der Arbeitsfähigkeit nicht annähernd genau bestimmen und erst gestützt auf das Gutachten verbindlich und abweichend von der echtzeitlichen Aktenlage einschätzen liess. In diesen Fällen wurde die Aufhebung auf den Zeitpunkt der Begutachtung festgesetzt (Urteil 8C_36/2019 vom 30. April 2019 E. 5 mit Hinweisen).
5.2. Die Beschwerdeführerin bringt vor, aus dem Verlauf vor der Anstellung bei B._ sei ersichtlich, dass sie behinderungsbedingt erheblich Mühe gehabt habe, eine Stelle zu finden. Sie habe kurz befristete Praktika absolviert, welche laut Vorinstanz nicht besonders stabil gewesen seien. Es sei widersprüchlich, wenn die Vorinstanz ohne nähere Begründung aufgrund der Anstellungen bei B._ am 1. April 2012 und bei C._ am 1. Oktober 2016 trotz jeweiliger Probezeiten von einer per sofort stabilen Verbesserung der beruflichen Situation ausgegangen sei. Gemäss <ref-law> seien die Anspruchsänderungen vielmehr jeweils nach Ablauf der dreimonatigen Frist, somit per 1. Juli 2012 und per 1. Januar 2017 vorzunehmen.
Die Vorinstanz hat nicht begründet, weshalb sie bei der Rentenherabsetzung auf den 1. April 2012 bzw. der Rentenaufhebung auf den 1. Oktober 2016 angenommen hat, die Verbesserung der Erwerbsfähigkeit werde voraussichtlich längere Zeit dauern, und somit vom Regelfall der Einräumung der dreimonatigen Wartedauer abgewichen ist (vgl. E. 3 hiervor). Gründe für die Rechtmässigkeit dieses Vorgehens sind auch nicht ohne Weiteres ersichtlich. Vielmehr ist festzuhalten, dass die Invalidenlaufbahn der Beschwerdeführerin nicht stabil war und Unsicherheit darüber bestand, wie sich ihre Festanstellungen bei B._ und bei C._ entwickeln würden. Unter diesen Umständen kommt vorliegend <ref-law> zur Anwendung (vgl. auch Urteile 9C_199 + 207/2020 vom 10. Juli 2020 E. 5.1.1 und 9C_787 + 795/2018 vom 19. Juli 2019 E. 4.3). Folglich ist die In validenrente der Beschwerdeführerin auf den 1. Juli 2012 auf eine Dreiviertelsrente herabzusetzen und ab 1. Januar 2017 aufzuheben.
6.
Dem Prozessausgang entsprechend sind die Verfahrenskosten zu drei Vierteln der Beschwerdeführerin und zu einem Viertel der Beschwerdegegnerin aufzuerlegen (<ref-law>). Die Beschwerdeführerin hat Anspruch auf eine Parteientschädigung im gleichen Verhältnis (<ref-law>).

Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird teilweise gutgeheissen. Der Entscheid des Sozialversicherungsgerichts des Kantons Zürich vom 29. Februar 2020 wird insoweit abgeändert, als die Beschwerdegegnerin der Beschwerdeführerin vom 1. Dezember 2008 bis 30. Juni 2012 eine ganze Invalidenrente, vom 1. Juli 2012 bis 31. Dezember 2015 eine Dreiviertelsrente und vom 1. Januar 2016 bis 31. Dezember 2016 eine halbe Invalidenrente auszurichten hat. Im übrigen wird die Beschwerde abgewiesen.
2.
Die Gerichtskosten von Fr. 800.- werden zu drei Vierteln der Beschwerdeführerin und zu einem Viertel der Beschwerdegegnerin auferlegt.
3.
Die Beschwerdegegnerin hat die Beschwerdeführerin für das bundesgerichtliche Verfahren mit Fr. 700.- zu entschädigen.
4.
Die Sache wird zur Neuverlegung der Kosten des vorangegangenen Verfahrens an das Sozialversicherungsgericht des Kantons Zürich zurückgewiesen.
5.
Dieses Urteil wird den Parteien, dem Sozialversicherungsgericht des Kantons Zürich und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 15. September 2020
Im Namen der I. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Maillard
Der Gerichtsschreiber: Jancar